MySQL 'where in'
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgegeben code
befehl
code
dank
datum
einsetzen
ersetzen
gedanke
hilfe
http
inhalt
sammeln
sicherheit
spalte
string
teil
url
vierte zeile
zweite befehl
-
Liebe Community!
Ich habe folgendes Problem, das ich bisher nicht lösen konnte:
ich habe folgenden mysql_query mit php der das Ergebnis in einem array speichern sollte:
$sql = mysql_query("SELECT x FROM y WHERE z = '".$_GET['w']."'") $rows1 = array(); while($r1 = mysql_fetch_assoc($sql)) { $rows1[] = $r1; }
jetzt habe ich versucht diesen array in einem neues query zu verwenden:
mysql_query("SELECT * from table WHERE a IN ('".$rows1."')");
leider liefert dies ein leeres Ergebnis zurück
Danke, lg & frohe Festtage (zum Teil schon vorbei) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie schaut der Befehl denn aus, wenn die Variable eingesetzt wurde? Lass ihn dir doch mal ausgeben.
-
tchab schrieb:
Wie schaut der Befehl denn aus, wenn die Variable eingesetzt wurde? Lass ihn dir doch mal ausgeben.
SELECT * from table WHERE a IN ('Array')
komisch da werden ja gar keine werte ausgegeben
Beitrag zuletzt geändert: 26.12.2014 22:45:39 von mczernin -
mczernin schrieb:
Was du suchst, kannst du mit implode() erreichen.
komisch da werden ja gar keine werte ausgegeben
mysql_query("SELECT * from table WHERE a IN ('".implode('\',\'',$rows1)."')");
(ungetestet)
Mach dir außerdem Gedanken über Sicherheit. Informiere dich über SQL-Injection. Du darfst Daten, die vom Benutzer, z.B. aus $_GET kommen nicht einfach ungeprüft in einen Datenbankbefehl einsetzen. -
fuerderer schrieb:
mczernin schrieb:
Was du suchst, kannst du mit implode() erreichen.
komisch da werden ja gar keine werte ausgegeben
mysql_query("SELECT * from table WHERE a IN ('".implode('\',\'',$rows1)."')");
(ungetestet)
Mach dir außerdem Gedanken über Sicherheit. Informiere dich über SQL-Injection. Du darfst Daten, die vom Benutzer, z.B. aus $_GET kommen nicht einfach ungeprüft in einen Datenbankbefehl einsetzen.
Danke für Deine Hilfe.!! Leider wird der befehl jetzt so ausgegeben:
SELECT * from table WHERE a IN ('Array','Array','Array','Array','Array')
Daher ergibt der zweite befehl wieder kein erebnis...
webfreclan schrieb:
mczernin schrieb:
mysql_query
Bitte beachte, dass die mysql_* Befehle ab PHP 5.5 als veraltet gekennzeichnet werden und später komplett entfernt werden sollen. PDO und MySQLi können die alten mysql_* Befehle ersetzen.
Hast du auch die Tabellennamen und Spaltennamen richtig angegeben?
Heisst das jetzt, dass ich einfach mysql_query durch mysqli_query ersetzen kann? Ich hab die spaltennamen und soaltennamen hier umbenannt.
Lg,
Max -
mczernin schrieb:
Heisst das jetzt, dass ich einfach mysql_query durch mysqli_query ersetzen kann?
Bei mysql_query müsste dass noch gehen, aber andere mysql_* Befehle wurden nicht 1:1 in MySQLi übernommen ... > Am besten immer auf PHP.net nachschauen! -
mczernin schrieb:
Mach mal bitte
Danke für Deine Hilfe.!! Leider wird der befehl jetzt so ausgegeben:
SELECT * from table WHERE a IN ('Array','Array','Array','Array','Array')
Daher ergibt der zweite befehl wieder kein erebnis...var_dump($rows1);
nachdem diese Variable erstellt wurde und teile uns mit, was der Befehl ausspuckt.
Vermutlich liefert die DB wirklich 5-Mal "Array" -
fuerderer schrieb:
mczernin schrieb:
Mach mal bitte
Danke für Deine Hilfe.!! Leider wird der befehl jetzt so ausgegeben:
SELECT * from table WHERE a IN ('Array','Array','Array','Array','Array')
Daher ergibt der zweite befehl wieder kein erebnis...var_dump($rows1);
nachdem diese Variable erstellt wurde und teile uns mit, was der Befehl ausspuckt.
Vermutlich liefert die DB wirklich 5-Mal "Array"
Hi :)
das spuckt das ganze aus:
array(5) { [0]=> array(1) { ["x"]=> string(5) "test1" } [1]=> array(1) { ["x"]=> string(5) "test2" } [2]=> array(1) { ["x"]=> string(5) "test3" } [3]=> array(1) { ["x"]=> string(5) "test4" } [4]=> array(1) { ["x"]=> string(5) "test5" } }
lg max -
Richtig, darauf hätte ich auch früher kommen können!
Ich hab dein erstes Codebeispiel angepasst, so sollte es funktionieren:
$sql = mysql_query("SELECT x FROM y WHERE z = '".$_GET['w']."'") $rows1 = array(); while($r1 = mysql_fetch_assoc($sql)) { $rows1[] = $r1["x"]; }
Die vierte Zeile hab ich am Ende verändert.
Erklärung: mysql_fetch_assoc() liefert selbst schon ein Array. Du möchtest jetzt aber nicht die kompletten Arrays sammeln, sondern nur den Inhalt der Spalte 'x'. Das ist ein Unterschied, auch wenn du nur eine Spalte abfragst. -
fuerderer schrieb:
Richtig, darauf hätte ich auch früher kommen können!
Ich hab dein erstes Codebeispiel angepasst, so sollte es funktionieren:
$sql = mysql_query("SELECT x FROM y WHERE z = '".$_GET['w']."'") $rows1 = array(); while($r1 = mysql_fetch_assoc($sql)) { $rows1[] = $r1["x"]; }
Die vierte Zeile hab ich am Ende verändert.
Erklärung: mysql_fetch_assoc() liefert selbst schon ein Array. Du möchtest jetzt aber nicht die kompletten Arrays sammeln, sondern nur den Inhalt der Spalte 'x'. Das ist ein Unterschied, auch wenn du nur eine Spalte abfragst.
Danke vielmals!! Es funktioniert!! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage