Bij het uitvoeren van onderstaande code krijg ik de foutmelding die hier ook onder staat. Het lijkt me dat het iets met de verbinding met database heeft te maken maar dat weet ik niet zeker. kan iemand me hierbij helpen?
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\gelinkte tabellen\test.php on line 39
<?php
//-------------------------------------------------
//Database openen en gegevens naar scherm schrijven
$host="localhost";
$username="root";
$dbnaam="test";
$fout= "FOUT: openen database mislukt";
$query = "SELECT t1.id, t1.naam, t1.adres, t1.woonplaats, t2.functie, t3.land FROM ";
$query .= "tbl_persoon AS t1, tbl_functie AS t2, tbl_land AS t3";
$query .= "WHERE t2.functie_id = t1.functie_id AND t3.land_id = t1.land_id";
//--- einde initalisatie
$db=mysql_connect($host, $username) or die($fout);
mysql_select_db($dbnaam, $db) or die($fout);
$result = mysql_query($query);
?>
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\Program Files\xampp\htdocs\gelinkte tabellen\test.php on line 16
FOUT: openen database mislukt
Maar dat zou sowieso niet hoeven want heb meer scripts op deze manier verbinding laten maken met database (zonder $password), kan misschien iets te maken hebben met selecteren uit verschillende tabellen o.i.d. want is nu eerste keer dat ik dat probeer maar kan hier geen fout in ontdekken??
Nee, je komt helemaal niet toe aan het selecteren, de functie mysql_connect() loopt al in het honderd. De username of het wachtwoord zal dan toch echt fout zijn.
Controleer overigens ook of $result TRUE of FALSE is en gebruik mysql_error() om de exacte fout te achterhalen bij een FALSE.
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\gelinkte tabellen\test.php on line 41
kan bovenstaande foutmelding dan niet een ander probleem zjin dan verbinden met m'n database?
$query = "SELECT t1.id, t1.naam, t1.adres, t1.woonplaats, t2.functie, t3.land FROM ";
$query .= "tbl_persoon AS t1, tbl_functie AS t2, tbl_land AS t3";
$query .= "WHERE t2.functie_id = t1.functie_id AND t3.land_id = t1.land_id";
als ik hiervan een sql statement maak en hem uitvoer in het sql testvenster binnen php admin dan doet hij gewoon wat ik wil en zo werkt hij niet, wel als ik deze code verander om iets te selecteren uit 1 tabel. dus ik denk zelf eigenlijk dat er in iets fout gaat met de while lus?
Jij doet de aanname dat de query altijd zal lukken, terwijl je de garantie hebt dat deze altijd kan mislukken. Ik bespeur hier een probleempje...
Kortom, controleer of $result TRUE of FALSE is (query is gelukt of mislukt) en op basis van dit resultaat ga je iets met $result doen of toon je de foutmelding die je met mysql_error() ophaalt.
Edit: echo $query eens, dan zul je de fout zelf ook wel zien
sorry dat was stom, dit doet hij dan bij het echoën
SELECT t1.id, t1.naam, t1.adres, t1.woonplaats, t2.functie, t3.land FROM tbl_persoon AS t1, tbl_functie AS t2, tbl_land AS t3WHERE t2.functie_id = t1.functie_id AND t3.land_id = t2.land_id
en nee die code staat er niet boven, ik moet ook zeggen dat ik niet zo veel van php weet, zal ik er eens boven plaatsen
SELECT t1.id, t1.naam, t1.adres, t1.woonplaats, t2.functie, t3.land FROM tbl_persoon AS t1, tbl_functie AS t2, tbl_land AS t3WHERE t2.functie_id = t1.functie_id AND t3.land_id = t1.land_id
Dit is dus een waardeloze manier van queries schrijven, je ziet de fout namelijk niet eens.
De volgende methode is minstens 100x beter:
SELECT
t1.id,
t1.naam,
t1.adres,
t1.woonplaats,
t2.functie,
t3.land
FROM
tbl_persoon AS t1,
tbl_functie AS t2,
tbl_land AS t3
WHERE
t2.functie_id = t1.functie_id
AND
t3.land_id = t1.land_id