Problem mit MySQL und PHP

Hi,
Ich wollte wissen, ob man bei MYSQL_QUERY auch Variablen in der SELECT-Abfrage nehmen kann.
Hier ist der Codeschnipsel;

$ergebnis = mysql_query(„SELECT * FROM linklist WHERE Kategorie=$kategorie_array[$i]“);

Außerdem wird bei untenstehender Zeile folgende Warnung angezeigt: Supplied argument is not a valid MySQL result resource in /pfad/name/script.php on line 50

$werte_db = mysql_fetch_array($ergebnis);

Vielen Dank im Vorraus,
Sebastian

Hallo!

Ich wollte wissen, ob man bei MYSQL_QUERY auch Variablen in
der SELECT-Abfrage nehmen kann.

Ja.

angezeigt: Supplied argument is not a valid MySQL result
resource in /pfad/name/script.php on line 50
$werte_db = mysql_fetch_array($ergebnis);

Kannst Du vielleicht noch 1, 2 Zeilen mehr anzeigen,
damit man den Zusammenhang besser sehen kann?
Da scheint z.B. irgendeine falsche Zuweisung drin
zu sein.

Gruss
Patrick

Ach ja, ich haben noch vergessen zu sagen, das es eine Linkliste werden soll, $kategorie_array[] ist die Kategorie des Links und $werte_array[][] ist ein 2-Dimensionaler array, indem alle Zeilen zu einer Kategorie angezeigt werden sollen.

Kannst Du vielleicht noch 1, 2 Zeilen mehr anzeigen,
damit man den Zusammenhang besser sehen kann?

Klaro, der interressante Teil kommt jetzt;

$i = 0;
while(isset($kategorie\_array[$i]))
{
 $ergebnis = mysql\_query("SELECT \* FROM linklist WHERE Kategorie=$kategorie\_array[$i]");
 $a = 0;
 do{
**$werte\_db = mysql\_fetch\_array($ergebnis);**
 $werte\_array[$a][0] = $werte\_db[0];
 $werte\_array[$a][1] = $werte\_db[1];
 $werte\_array[$a][2] = $werte\_db[2];
 $a++;
 }while($werte\_db != FALSE);

 $b = 0;
}

Danke nochmal,
Sebastian

Also, zwei Sachen fallen mir so kurz vor Feierabend auf:

  1. i wird nicht hochgezaehlt

  2. Was ist Kategorie fuer ein Typ?
    Wenn es Varchar ist, dann muesste es so aussehen:

    „SELECT * FROM linklist WHERE Kategorie=’$kategorie_array[$i]’“);

Gruss
Patrick

$i = 0;
while(isset($kategorie_array[$i]))
{
$ergebnis = mysql_query(„SELECT * FROM linklist WHERE
Kategorie=$kategorie_array[$i]“);
$a = 0;
do{
$werte_db = mysql_fetch_array($ergebnis);
$werte_array[$a][0] = $werte_db[0];
$werte_array[$a][1] = $werte_db[1];
$werte_array[$a][2] = $werte_db[2];
$a++;
}while($werte_db != FALSE);

$b = 0;

und wenn ich auch nochmal meckern darf :wink:
bastel deine strings lieber nach dem schema:

„SELECT * FROM blah WHERE field=’“.$array[$i]."’"

  1. ist uebersichtlicher
  2. der string muss nicht mehr in eine variable gecasted werden.
  3. is besser :wink:

und wenn ich auch nochmal meckern darf :wink:

Was heißt meckern??? Das sind doch kostruktive Verbesserungsvorschläge :wink:))).

bastel deine strings lieber nach dem schema:
„SELECT * FROM blah WHERE field=’“.$array[$i]."’"

  1. ist uebersichtlicher
  2. der string muss nicht mehr in eine variable gecasted
    werden.
  3. is besser :wink:

Habe ich gemacht, es funktioniert auch, und es kommt keine Warnung mehr. Ich habe aber trotzdem nicht verstanden, was die vielen ´und " sollen. Kannst du mir da bitte noch eine Erklärung schicken???

Aber trotzdem Danke, jetzt gehts!!!

Thanx

Sebastian

Warnung mehr. Ich habe aber trotzdem nicht verstanden, was die
vielen ´und " sollen. Kannst du mir da bitte noch eine
Erklärung schicken???

Na, wenn das Feld in der Datenbank vom Typ VarChar ist, dann
muss auch die where-Klausel ein String sein, und da hier
scheinbar das Feld Kategorie Strings enthaelt musst Du
eben …where Kategorie = ‚KategorieABC‘… schreiben und
nicht …where Kategorie = KategorieABC…
Einfache fuer den String in der where-Klausel und doppelte,
um den gesamten SQL-String zu quoten.

Gruss
Patrick

naja, da waren noch nen paar mehr „“’"’"’ :wink:
dieses meinte ich:
$string = „blah " . $var . " hier geht der string weiter“;

wenn du variablen in einen string einbaust beendte den string vorher und fuege deine teile dann per . zusammen…

Vielen Dank (o.T.)
Ah, Danke, jetzt habe ich es verstanden. Vielen Dank noch mal an alle.
Das Script funktioniert jetzt.
Thanx
Sebastian