Verbinding maken met MySql
Ik heb WAMP (incl. MySQL) geïnstalleerd maar volgens mij is er iets mis met de installatie of moet ik nog dingen veranderen in de installatie. Hoe het ook zij ik krijg geen verbinding met MySQL. Ik heb in MySQL al een database aangemaakt onder de naam 'mijn_databank'.
Ik heb van alles geprobeerd, bijv. het onderstaande bestandje opgeslagen als db_config.php en dat vervolgens laten oproepen in de browser. Dus: localhost/db_config.php Maar ik blijf een leeg scherm krijgen.
Is er een mogelijkheid om de installatie van MySQL te testen?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$db_config['server'] = 'localhost';
$db_config['username'] = 'root';
$db_config['database'] = 'mijn_databank';
mysql_connect($db_config['server'], $db_config['username']) or die (mysql_error());
?>
$db_config['server'] = 'localhost';
$db_config['username'] = 'root';
$db_config['database'] = 'mijn_databank';
mysql_connect($db_config['server'], $db_config['username']) or die (mysql_error());
?>
Ik hoop van harte dat iemand mij kan helpen!!!
En waar verbind je met de database met mysql_select_db?
Even voor de goede orde: Kijk ook eens naar MySQLi, deze functiebibliotheek is recenter dan de MySQL-functiebibliotheek die je nu gebruikt.
Gewijzigd op 26/07/2014 15:23:23 door - Ariën -
Daarbij, ook al heb je de juiste connectie, de pagina zal leeg blijven.
Via php.net onderstaande code gehaald:
Code (php)
Als je een lege pagina te zien krijgt werkt alles, krijg je de foutmelding dan weet je dat er iets niet goed is ingevuld.
Als je de lege pagina te zien krijgt weet je dus dat je een selectquery of insertquery ofzo kunt gebruiken
Succes!
Nu krijg ik geen leeg scherm maar de volgende foutmelding:
( ! ) Warning: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (28000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\wamp\www\db_config.php on line 10
Call Stack
# Time Memory Function Location
1 0.0012 365320 {main}( ) ..\db_config.php:0
2 0.0012 367528 mysqli->mysqli( ) ..\db_config.php:10
Failed to connect to MySQL: (1045) Access denied for user 'root'@'localhost' (using password: YES)
Toevoeging op 26/07/2014 16:03:40:
Je springt nu wel van de hak op de tak. Je laat ons eerst een stuk code zien en daarna ga je met andere code aan de slag. Dat schiet niet op natuurlijk. En bovendien HET KLOPTE dat je een lege pagina kreeg!
Als dat zo is gebruik je dit:
Dus als ik het goed begrepen heb,als ik nu een tabel aanmaak met een aantal kolommen moet deze op deze manier zichtbaar zijn?
maar om zonder tabellen aan te maken iets uit de database te toveren kun je dit doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$db_config['server'] = 'localhost';
$db_config['username'] = 'root';
$db_config['password'] = '';
$db_config['database'] = 'mijn_databank';
$con = mysqli_connect($db_config['server'], $db_config['username'], $db_config['password']);
if (!$con) {
echo 'Er kon geen verbinding gemaakt worden met de database: ' . mysqli_error();
exit;
}
echo '<h3>Verbinding met de database is opgezet.</h3>';
echo '<h3>Dit zijn de databases die voorhanden zijn op de server:</h3>';
$result = mysqli_query($con, 'SHOW DATABASES');
while($row = mysqli_fetch_assoc($result))
{
echo $row['Database'] . '<br>';
}
?>
$db_config['server'] = 'localhost';
$db_config['username'] = 'root';
$db_config['password'] = '';
$db_config['database'] = 'mijn_databank';
$con = mysqli_connect($db_config['server'], $db_config['username'], $db_config['password']);
if (!$con) {
echo 'Er kon geen verbinding gemaakt worden met de database: ' . mysqli_error();
exit;
}
echo '<h3>Verbinding met de database is opgezet.</h3>';
echo '<h3>Dit zijn de databases die voorhanden zijn op de server:</h3>';
$result = mysqli_query($con, 'SHOW DATABASES');
while($row = mysqli_fetch_assoc($result))
{
echo $row['Database'] . '<br>';
}
?>
Toevoeging op 26/07/2014 16:29:23:
Wij geven je bewust voorbeelden met de mysqli extensie omdat de mysql_ extensie verouderd is en in toekomstige PHP versies misschien niet meer zal werken
Dankjewel Frank, ben weer een stukje verder op weg.
Gewijzigd op 26/07/2014 16:35:19 door Frank Nietbelangrijk
Ik heb nu idd verbinding met MySQL maar ik wil nu vanuit PHP een database met de naam "oefening" aanmaken.
Dat probeer ik met het volgende PHP-script:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$linkID = mysql_connect('localhost', 'root', '');
mysql_create_db('oefening', $linkID);
mysql_select_db('oefening');
$query = "CREATE TABLE fears (
id INT NOT NULL AUTO_INCREMENT PRIMERY KEY,
)";
$result = mysql_query($QUERY_STRING);
?>
$linkID = mysql_connect('localhost', 'root', '');
mysql_create_db('oefening', $linkID);
mysql_select_db('oefening');
$query = "CREATE TABLE fears (
id INT NOT NULL AUTO_INCREMENT PRIMERY KEY,
)";
$result = mysql_query($QUERY_STRING);
?>
Dan krijg ik echter de volgende melding:
(!) Fatal error: Call to undefined functie mysql_create_db () in C: \ wamp \ www \ create_db.php on line 13
Call Stack
# Tijd Geheugen Functie Plaats
1 0.0015 366136 {Main} () .. \ Create_db.php : 0
Wat doe ik nu weer verkeerd, of wat zie ik nu weer over het hoofd?
http://nl3.php.net/mysql_create_db
je kunt ook gewoon met een query (zie link) een database aanmaken.
Maar maak een keuze: gebruik mysql of mysqli (bij voorkeur de laatste, dan werkt je script ook in de volgende versie van php)
je kunt ook gewoon met een query (zie link) een database aanmaken.
Maar maak een keuze: gebruik mysql of mysqli (bij voorkeur de laatste, dan werkt je script ook in de volgende versie van php)
Ik kan nu een database aanmaken.
Ik heb een database aangemaakt met de naam 'oefening'
Vervolgens in deze database een tabel met de naam 'Persons'
Deze tabel wil ik als volgt vullen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$con=mysqli_connect("localhost","root","","oefening");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO Persons (VoorNaam, AchterNaam, Leeftijd)
VALUES ('Peter', 'Griffin',35)");
mysqli_query($con,"INSERT INTO Persons (VoorNaam, AchterNaam, Leeftijd)
VALUES ('Glenn', 'Quagmire',33)");
mysqli_close($con);
?>
$con=mysqli_connect("localhost","root","","oefening");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO Persons (VoorNaam, AchterNaam, Leeftijd)
VALUES ('Peter', 'Griffin',35)");
mysqli_query($con,"INSERT INTO Persons (VoorNaam, AchterNaam, Leeftijd)
VALUES ('Glenn', 'Quagmire',33)");
mysqli_close($con);
?>
Dit werkt echter voor geen meter.
Ook probeer ik het rechtstreeks in MySQL op de volgende manier:
INSERT INTO `persons`(`VoorNaam`, `Achternaam`, `Leeftijd`) VALUES ([Peter],[Griffin],[35])
Dan krijg ik echter de volgende foutmelding:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Peter],[Griffin],[35])' at line 1
Ik diverse boeken doorgespit en verschillende site's bezocht en volgens mij doe ik het toch echt goed.
Help Me alsjeblieft!!!!
Toevoeging op 08/08/2014 17:36:44:
Nog even ter extra info! Ik werk in WAMP
dat moet dan gewoon met ' ' gedaan he
weet je zeker dat je een Mysql tutorial volgt? die [ ] heb ik bij Access wel eens gezien dacht ik.
Let er ook op dat onder Linux de tabelnaam hoofdletter gevoelig is: Persons is wat anders dan persons
Maar waarom lukt het nog steeds niet vanuit PHP?
http://wiki.pfz.nl/mysql-foutafhandeling-in-php/
nog geschreven met mysql-functies ipv mysqli, maar het idee is hetzelfde: zorg dat je bij een niet lukkende query een foutmelding krijgt (die zijn vaak best verhelderend)
nog geschreven met mysql-functies ipv mysqli, maar het idee is hetzelfde: zorg dat je bij een niet lukkende query een foutmelding krijgt (die zijn vaak best verhelderend)
Ivo P op 08/08/2014 17:43:09:
weet je zeker dat je een Mysql tutorial volgt? die [ ] heb ik bij Access wel eens gezien dacht ik.
weet je zeker dat je een Mysql tutorial volgt? die [ ] heb ik bij Access wel eens gezien dacht ik.
Ja bij de identifiers, dus
Maar gewoon zonder omsluitingen, dat is de standaard SQL'
Ivo P op 08/08/2014 17:43:09:
Let er ook op dat onder Linux de tabelnaam hoofdletter gevoelig is: Persons is wat anders dan persons
Nee hoor tussen de backticks is het hoofdlettergevoelig, anders niet.
Heeft niets met besturingssysteem te maken.
->
Moet dit:
Niet zijn?:
Ah, tis al opgelost.. Ik was beetje laat met reageren.
Moet dit:
Niet zijn?:
Ah, tis al opgelost.. Ik was beetje laat met reageren.
Gewijzigd op 08/08/2014 19:53:20 door Goto Learn
Volgens mij ook Ivo. Ik heb echter nooit geprobeerd of tabelnamen hoofdletter gevoelig zijn want ik schrijf ze standaard uitsluitend met kleine letters. gebruik van backtics heb ik ook afgeleerd en gebruik ik ook al heel lang niet meer
Ivo heeft gelijk, je kan het zelfs instellen.