mysql_fetch_array()
Ik heb een soortgelijk probleem als Jasper de Rossi, maar dan met arrays
Mijn script luidt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$db = mysql_connect("localhost", "------", "--------")
or die("Kan niet verbinden: " . mysql_error());
mysql_select_db("database",$db);
$sql = "SELECT * FROM Artikel";
$resultaat = mysql_query($sql); //voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo $rij["ARTIKEL_ID"]."<br>";
echo $rij["Naam"]."<br>";
echo $rij["Omschrijving"]."<br>";
echo $rij["Prijs"]."<br>";
}
mysql_close($db);
?>
$db = mysql_connect("localhost", "------", "--------")
or die("Kan niet verbinden: " . mysql_error());
mysql_select_db("database",$db);
$sql = "SELECT * FROM Artikel";
$resultaat = mysql_query($sql); //voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo $rij["ARTIKEL_ID"]."<br>";
echo $rij["Naam"]."<br>";
echo $rij["Omschrijving"]."<br>";
echo $rij["Prijs"]."<br>";
}
mysql_close($db);
?>
Hierop krijg ik de melding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
resource in /home/------/domains/ma........ etc.
Kan iemand me op weg helpen.
Alvast dank.
Martin.
Gewijzigd op 23/09/2012 17:34:25 door Martin Rouw
- Klik
- Geen * gebruiken in je query, schrijf gewoon alle velden op die je nodig bent.
- Waarom 4x echo op regel 9 tot 12. Je kan op 9 echo openen en op 12 sluiten.
- Verander eens alle " in de while naar ' voorbeeld: $rij['ARTIKEL_ID'].'<br>
- Als ik nu goed zie heb je de veld namen met een HOOFD letters. Je kan beter velden met kleine letter schrijven.
Gewijzigd op 23/09/2012 18:16:56 door Frank WD
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$db = mysql_connect("localhost", "------", "--------") or die("Kan niet verbinden: " . mysql_error());
mysql_select_db("database"); // 2e kun je weglaten
$sql = mysql_query("SELECT * FROM Artikel"); // SQL meteen uitvoeren, raakt PHP minder belast
// * is handiger, werkt sneller en MYSQL hoeft niet na te denken! :idee:
while($rij = mysql_fetch_array($sql)) {
echo $rij['ARTIKEL_ID']."<br>".$rij['Naam']."<br>".$rij['Omschrijving']."<br>".$rij['Prijs']."<br>";
}
// mysql_close($db); dit kun je weglaten
?>
$db = mysql_connect("localhost", "------", "--------") or die("Kan niet verbinden: " . mysql_error());
mysql_select_db("database"); // 2e kun je weglaten
$sql = mysql_query("SELECT * FROM Artikel"); // SQL meteen uitvoeren, raakt PHP minder belast
// * is handiger, werkt sneller en MYSQL hoeft niet na te denken! :idee:
while($rij = mysql_fetch_array($sql)) {
echo $rij['ARTIKEL_ID']."<br>".$rij['Naam']."<br>".$rij['Omschrijving']."<br>".$rij['Prijs']."<br>";
}
// mysql_close($db); dit kun je weglaten
?>
Heb NATUURLIJK nog niet getest, mag je zelf doen!
Probleem opgelost.
Zo weet een mede forum gebruiker ook wat de oplossing is, mochten ze het zelfde probleem tegen komen.
mysql_select_db("database");
Dit moest zijn:
mysql_select_db("Database");
Dus het verschil kleine en grote letter maakte de fout. Ik heb hier domweg constant overheen gelezen.
wat overigens ook voor bestandsnamen geldt wat mij betreft
Gewijzigd op 24/09/2012 00:34:31 door Frank Nietbelangrijk
Allen bedankt!!
Wat betreft Frank Nietbelangrijk zegt klopt. Ik kan mij wel voorstellen dat diverse programmeurs het netter vinden in het script om alles met een hoofd letter te laten beginnen. Alleen dan moet je hier wel erg stuctueel in zijn en het altijd en overal doen. Ook zou ik dan een Comment notitie boven aan zetten dat je hoofd letters als eerste letter gebruikt.
Alleen het is niet aan te raden.
- Gebruik geen or die, niemand niks of iets gaat dood als je een foutje maakt. Handel zo'n fout goed af.
- De database selectie heeft geen foutafhandeling nodig?
- Je kan zo'n beetje alles weglaten, dat hoeft nog niet te zeggen dat het goed is... De SQL link als 2e param meegeven is zeker een goed idee, dan krijg je nooit problemen als je met 2 connecties loopt te spelen.
- * handiger en sneller? Echt niet! Je weet niet wat je selecteert, je moet telkens je MySQL database induiken om te kijken welke velden je nou hebt gepakt. Daarnaast is het ook echt niet sneller, MySQL moet alsnog nadenken en je haalt veel onnodige gegevens op: Je hebt bijna nooit alles nodig
- SQL meteen uitvoeren? Voor het debuggen is het idioot handig om te kijken hoe de uiteindelijk query eruit ziet, plaats deze in een aparte variabele zodat je die makkelijk kunt echoën
- Een query is vaak de plaats waar iets fout kan gaan, maar foutafhandeling is daar schijnbaar ook niet nodig?
- fetch_array is traag, je hebt dan 2x zoveel gegevens waarvan je de helft niet gaat gebruiken. Gebruik fetch_assoc
Gewijzigd op 24/09/2012 09:18:56 door Wouter J