Supplied argument is not a valid MySQL result resource
Pedda
- datenbank
0 Cheatah0 Thomas Luethi0 Pedda
0 Axel Richter0 Pedda0 Pedda0 Thomas Luethi
Hallo zusammen,
ich zermater mir hier schon seit einiger Zeit mein kleines Hirn :(
Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...
Folgender Code:
********************************************************************
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
$query = mysql_query($select, $db) or die(mysql_error());
while($select = mysql_fetch_row($query)) {
$name = $select[0];
$var1=$select[2];
$var2=$select[3];
$dif1=$var1-$var2;
$gro = "SELECT naff1, naff2 FROM tabelle1 WHERE id='$gro_id'";
$suche = mysql_query($gro, $db) or die(mysql_error());
while ($gro = mysql_fetch_row($suche)) {
$var3=$gro[0];
$var4=$gro[1];
$dif2=$var3-$var4;
$punktealt = "SELECT punkte FROM tabelle2 WHERE name='$name'";
$punkt = mysql_query($punktealt, $db) or die(mysql_error());
while ($punktealt = mysql_fetch_row($punkt)) {
$update = "UPDATE tabelle2 SET punkte_alt='$punktealt[0]' WHERE name='$name'";
$query = mysql_query($update, $db) or die(mysql_error());
}
if ($var1==$var3 && $var2==$var4){
$update = "UPDATE tabelle2 SET feld1=feld1+1 WHERE name='$name'";
$upquery = mysql_query($update, $db) or die(mysql_error());
$update2 = "UPDATE tabelle2 SET punkte=punkte+3 WHERE name='$name'";
$upquery2 = mysql_query($update2, $db) or die(mysql_error());
}
else if ($dif1==$dif2) {
$update3 = "UPDATE tabelle2 SET feld2=feld2+1 WHERE name='$name'";
$upquery3 = mysql_query($update3, $db) or die(mysql_error());
$update4 = "UPDATE tabelle2 SET punkte=punkte+2 WHERE name='$name'";
$upquery4 = mysql_query($update4, $db) or die(mysql_error());
}
else if (($var1>$var2 && $var3>$var4) || ($var1<$var2 && $var3<$var4)) {
$update5 = "UPDATE tabelle2 SET feld3=feld3+1 WHERE name='$name'";
$upquery5 = mysql_query($update5, $db) or die(mysql_error());
$update6 = "UPDATE tabelle2 SET punkte=punkte+1 WHERE name='$name'";
$upquery6 = mysql_query($update6, $db) or die(mysql_error());
}
}
}
********************************************************************
Die Zeile, die er anmeckert ist
while($select = mysql_fetch_row($query)) {
(also die vierte)
.... kann mir jemand bitte sagen warum das passiert ?
Thnx & Gruss aus Münster
Pedda
Hi,
Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...
bei welchem Statement, wie lautet es an der Stelle *exakt*?
Cheatah
Hi Cheatah,
bei welchem Statement, wie lautet es an der Stelle *exakt*?
die Stelle hatte ich geposted... ;-)
Es ist die (im Post) vierte Zeile
while($select = mysql_fetch_row($query)) {
...also wenn der Schleifedurchlauf zum zweitenmal anfängt..
Gruss aus Münster
Pedda
Hi,
die Stelle hatte ich geposted... ;-)
aber nicht das Statement. Allenfalls dessen Erzeugung.
Cheatah
Hi,
aber nicht das Statement. Allenfalls dessen Erzeugung.
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
$query = mysql_query($select, $db) or die(mysql_error());
while($select = mysql_fetch_row($query)) {
...
? das ist doch das statement ?
Pedda
Hi,
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
? das ist doch das statement ?
nein, die Generierung desselben. Kein Mensch(!) weiß, wie das Statement lautet.
Cheatah
Hallo,
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
So, und was bitte steht jetzt in $select?
PHP-Code ist fuer uns Helfer nutzlos, wenn es offensichtlich
um ein MySQL-Problem geht.
Ausgeben lassen, anschauen, ggf. hier posten.
echo "Die Query lautet: $select";
Vermutlich ist $wert leer, oder es enthaelt einen String...
$query = mysql_query($select, $db) or die(mysql_error());
Ich vermute zwar, dass das Problem in Deinem Query-String liegt, aber:
Bist Du sicher, dass $db eine funktionierende Verbindungs-Kennung ist?
Hast Du auch dort (d.h. irgendwo weiter oben), wo Du die Verbindung
herstellst, eine Fehlerbehandlung eingebaut?
Guck mal hier:
http://www.php.net/manual/de/ref.mysql.php
Deine Variablennamen scheinen mir nicht sehr schlau gewaehlt.
Mit Query bezeichnet man normalerweise den SQL-Befehl,
also das, was Du oben $select genannt hast.
Das, was Du hier $query nennst, bezeichnet man oft als Resultat.
while($select = mysql_fetch_row($query)) {
Hier benutzt Du $select schon wieder, jetzt aber, um
eine Zeile aus dem Resultat zu erhalten...
Den Rest guck ich mir gar nicht erst an.
Gruesse,
Thomas
Hallo,
Vermutlich ist $wert leer, oder es enthaelt einen String...
... nö ;-)
$wert ist ein INT (in meinen Tests 1 oder 2)
Die Ausgabe von $select ist auch korrecht (WHERE tag_id=1)
Bist Du sicher, dass $db eine funktionierende Verbindungs-Kennung ist?
Hast Du auch dort (d.h. irgendwo weiter oben), wo Du die Verbindung
herstellst, eine Fehlerbehandlung eingebaut?
Jo - Verbindung ist definitiv ok
Deine Variablennamen scheinen mir nicht sehr schlau gewaehlt.
...is klar, aber so heissen die Dinger nunmal *g*
Den Rest guck ich mir gar nicht erst an.
...och...
Gruss
Pedda
Hallo,
ich zermater mir hier schon seit einiger Zeit mein kleines Hirn :(
Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...
Folgender Code:
********************************************************************
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
$query = mysql_query($select, $db) or die(mysql_error());
^$query ist der resource identifier für die SELECT-Query.
while($select = mysql_fetch_row($query)) {
...
$query = mysql_query($update, $db) or die(mysql_error());
^hier wird $query entweder TRUE oder FALSE, jenachdem, ob die UPDATE-Query erfolgreich ist oder nicht.
...
}
Die Zeile, die er anmeckert ist
while($select = mysql_fetch_row($query)) {
Klar, weil beim zweiten Durchlauf der WHILE-Schleife das $query entweder TRUE oder FALSE, aber keinesfalls mehr ein resource identifier ist, welcher mit mysql_fetch_row() behandelt werden könnte.
viele Grüße
Axel
Hallo,
$query = mysql_query($select, $db) or die(mysql_error());
^$query ist der resource identifier für die SELECT-Query.
$query = mysql_query($update, $db) or die(mysql_error());
^hier wird $query entweder TRUE oder FALSE, jenachdem, ob die UPDATE-Query erfolgreich ist oder nicht.
Die Zeile, die er anmeckert ist
while($select = mysql_fetch_row($query)) {
Klar, weil beim zweiten Durchlauf der WHILE-Schleife das $query entweder TRUE oder FALSE, aber keinesfalls mehr ein resource identifier ist, welcher mit mysql_fetch_row() behandelt werden könnte.
DAS sind doch mal Auskünfte *g* Thnx !
Aber was tu ich dagegen ?
Hab' keinen blassen Schimmer :(
Gruss
Pedda
YESSSSS......
ich hab's gefunden *g*
THNX nochmal an alle !
Gruss aus Münster
Pedda
Hallo,
Aber was tu ich dagegen ?
Waehle endlich sinnvolle Bezeichnungen, dann passiert sowas
nicht so schnell. Wie gesagt, nimm Dir z.B.
http://www.php.net/manual/de/ref.mysql.php#mysql.examples
als Vorbild.
Gaengig und verstaendlich sind z.B. folgende Variablennamen:
$sql oder $query fuer das SQL-Statement
$result oder so fuer das Resultat
$line oder $zeile fuer eine einzelne Zeile
u.s.w.
Gruesse,
Thomas