dsNDesign
Erfahrenes Mitglied
Hei,
ich möchte eine Datenbankabfrage machen, in welcher ich mit FIND IN SET nach mehreren Werten suche.
Erstmal mein Array mit den zu suchenden Werten:
Dann meine Abfrage:
So holt er mir nur das Ergebnis mit dem letzten Wert aus $group_ids.
Seither, ohne Prepared Statements hatte ich es so:
Jedoch möchte ich ja Prepared Statements verwenden.
Ist dies möglich? Hab mein Glück schon mit call_user_func_array versucht, jedoch ohne Erfolg.
Gruß
EDIT:
Ouh man. Die Frage hat sich erledigt. Ich muss das Array logischerweise als String behandeln, obwohl es natürlich Zahlen enthält, da ich es ja mit "," getrennt habe.
Also einfach aus
folgendes machen
und alles funktioniert bestens
ich möchte eine Datenbankabfrage machen, in welcher ich mit FIND IN SET nach mehreren Werten suche.
Erstmal mein Array mit den zu suchenden Werten:
PHP:
$group_ids = {3, 5, 6,...} //beliebig viele Werte
Dann meine Abfrage:
PHP:
if($stmt = DB::getInstance()->prepare("SELECT id FROM alben WHERE FIND_IN_SET(owner_id, ?) && type = ?")) {
$type = "g";
$stmt->bind_param("is", $group_ids, $type);
$stmt->execute();
$stmt->bind_result($id);
while($stmt->fetch()) {
$group_album_ids[] = $id;
}
$stmt->close();
}
So holt er mir nur das Ergebnis mit dem letzten Wert aus $group_ids.
Seither, ohne Prepared Statements hatte ich es so:
PHP:
FIND_IN_SET(owner_id,'{$group_ids}')
Ist dies möglich? Hab mein Glück schon mit call_user_func_array versucht, jedoch ohne Erfolg.
Gruß
EDIT:
Ouh man. Die Frage hat sich erledigt. Ich muss das Array logischerweise als String behandeln, obwohl es natürlich Zahlen enthält, da ich es ja mit "," getrennt habe.
Also einfach aus
PHP:
$stmt->bind_param("is", $group_ids, $type);
PHP:
$stmt->bind_param("ss", $group_ids, $type);
Zuletzt bearbeitet: