foreach() invalid
Ik heb me phpboek bijna uit, nu een probleem met mysql ik heb de instructies gevolgt en de het script al 100 keer gecontroleert maar die is gelijk
ik krijg deze foutmelding
Warning: Invalid argument supplied for foreach() in /home/vaalaap/domains/vaalaap.nl/public_html/site/test/opvragen2.php on line 50
de code:
// de inhoud van velden weergeven
for($i=0; $i <= $aantal_regels; $i++){
$row=mysql_fetch_row($res);
echo '<tr>';
foreach($row as $col){ // dit is regel 50!!
if(!$col) $col=" ";
echo "<td>$col</td>";
}
echo '</tr>';
}
echo '</table>';
bedankt!
http://php.net/mysql_fetch_row
lees daar maar wanneer die functie geen array returned
Gewijzigd op 12/08/2010 21:19:46 door Dos Moonen
Vervangen door de meest gebruikte methode:
Hierstaat zolang mysql_fetch_row() geen boolean false (of iets leegs, array(), '', etc) terug geeft. Doe een loop.
In jouw code wordt $row een keer boolean false. En dat vind een foreach(){} niet zo leuk ;P (Wat Dos Moonen ook al zegt)
Gewijzigd op 12/08/2010 21:31:22 door Martijn B
Ray de graaf op 12/08/2010 21:17:25:
HIk heb me phpboek bijna uit,
Heb je het over PHP 5 in 10 minuten? :P
Olie koning op 12/08/2010 21:59:33:
Heb je het over PHP 5 in 10 minuten? :P
Ray de graaf op 12/08/2010 21:17:25:
HIk heb me phpboek bijna uit,
Heb je het over PHP 5 in 10 minuten? :P
haha
ja dat boek ja..
maar die staat vol met typefouten ook in de code's zag dat er onlangs een update van dit boek verkocht word maar die fouten in het boek zorgen er alleen maar voor dat ik me dieper in de stof moet graven om het tog op te lossen en als het echt ni lukt hier vragen:P
Gewijzigd op 12/08/2010 22:24:30 door ray de graaf
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
$sql = "mijn query";
$res = mysql_query($sql);
if(!$res) {
echo 'Interne fout in mijn systeempje. Sorry, misschien dat het werkt als je het overnieuw probeerd?';
een_bepaalde_log_functie('SQL error: '.mysql_error());
} else {
while($row = mysql_fetch_assoc($res)) {
// in $row staat nu (per rij) de data die je nodig hebt
}
}
?>
$sql = "mijn query";
$res = mysql_query($sql);
if(!$res) {
echo 'Interne fout in mijn systeempje. Sorry, misschien dat het werkt als je het overnieuw probeerd?';
een_bepaalde_log_functie('SQL error: '.mysql_error());
} else {
while($row = mysql_fetch_assoc($res)) {
// in $row staat nu (per rij) de data die je nodig hebt
}
}
?>
Het enige wat mist aan die code hierboven, is goede variabele namen. ik kan deze natuurlijk niet inschatten, omdat ze systeem specifiek zijn.
Wat ik altijd doe is een naam als:
$replyQuery, $replyResult, $replyRow
bij reply's in een forum bijvoorbeeld.
Vaak zie je ook de "or die" syntax na een query. Het voordeel hiervan is dat een error makkelijk en snel afgevangen word, het grote nadeel is dat je script meteen stopt. je wilt eigenlijk de gebruiker een nette fout laten zien, en de pagina netjes afsluiten (met goede sluit tags, etc), de pagina mooi vormgeven ookal is het een foutmelding. Ook wil je de foutmelding loggen.
Als je dat allemaal wilt doen, is het makkelijkste eigenlijk om geen "or die" te gebruiken, en dus een if/else om te kijen of je query gelukt is.
ik heb het nu in iedergeval met de while versie gedaan, ga de andere ook ef proberen!
tot ziens bij me volgende probleem XD
Niek s op 12/08/2010 22:31:17:
Dit is de correcte manier om meerdere rijen uit een tabel te trekken:
Het enige wat mist aan die code hierboven, is goede variabele namen. ik kan deze natuurlijk niet inschatten, omdat ze systeem specifiek zijn.
Wat ik altijd doe is een naam als:
$replyQuery, $replyResult, $replyRow
bij reply's in een forum bijvoorbeeld.
Vaak zie je ook de "or die" syntax na een query. Het voordeel hiervan is dat een error makkelijk en snel afgevangen word, het grote nadeel is dat je script meteen stopt. je wilt eigenlijk de gebruiker een nette fout laten zien, en de pagina netjes afsluiten (met goede sluit tags, etc), de pagina mooi vormgeven ookal is het een foutmelding. Ook wil je de foutmelding loggen.
Als je dat allemaal wilt doen, is het makkelijkste eigenlijk om geen "or die" te gebruiken, en dus een if/else om te kijen of je query gelukt is.
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
$sql = "mijn query";
$res = mysql_query($sql);
if(!$res) {
echo 'Interne fout in mijn systeempje. Sorry, misschien dat het werkt als je het overnieuw probeerd?';
een_bepaalde_log_functie('SQL error: '.mysql_error());
} else {
while($row = mysql_fetch_assoc($res)) {
// in $row staat nu (per rij) de data die je nodig hebt
}
}
?>
$sql = "mijn query";
$res = mysql_query($sql);
if(!$res) {
echo 'Interne fout in mijn systeempje. Sorry, misschien dat het werkt als je het overnieuw probeerd?';
een_bepaalde_log_functie('SQL error: '.mysql_error());
} else {
while($row = mysql_fetch_assoc($res)) {
// in $row staat nu (per rij) de data die je nodig hebt
}
}
?>
Het enige wat mist aan die code hierboven, is goede variabele namen. ik kan deze natuurlijk niet inschatten, omdat ze systeem specifiek zijn.
Wat ik altijd doe is een naam als:
$replyQuery, $replyResult, $replyRow
bij reply's in een forum bijvoorbeeld.
Vaak zie je ook de "or die" syntax na een query. Het voordeel hiervan is dat een error makkelijk en snel afgevangen word, het grote nadeel is dat je script meteen stopt. je wilt eigenlijk de gebruiker een nette fout laten zien, en de pagina netjes afsluiten (met goede sluit tags, etc), de pagina mooi vormgeven ookal is het een foutmelding. Ook wil je de foutmelding loggen.
Als je dat allemaal wilt doen, is het makkelijkste eigenlijk om geen "or die" te gebruiken, en dus een if/else om te kijen of je query gelukt is.