Mailinglisten-Archive |
Christian Wohlgemuth wrote:
> Hallo Liste,
>
> ich habe wieder ein Problem mit PDO und bindValue.
> Diesmal bei folgender Query:
>
> [..]
> $query = 'SELECT * FROM `tabelle` WHERE `tabelle`.`id` IN (?)';
> $stmt = $pdo->prepare($query);
> $stmt->bindValue(1, implode(', ',$array));
> $stmt->execute();
> [..]
>
> leider bekomme ich laut mysql.log folgendes Query:
> [..]
> SELECT * FROM `tabelle` WHERE `tabelle`.`id` IN ('1, 3, 7')
> [..]
> und somit das falsche Ergebnis.
Stimmt. So sollte es aber funktionieren:
---
$query = 'SELECT * FROM `tabelle` WHERE `tabelle`.`id` IN
(?'.str_repeat(',?',count($array)-1).')';
$stmt = $pdo->prepare($query);
$stmt->bindValue(1, $array);
---
Der Code geht jedoch davon aus, dass $array immer mindestens ein Element
enthält. Du solltest entweder sicherstellen, dass dies der Fall ist,
oder meinen Code umschreiben.
> vielen Dank
> Christian
Yannik
php::bar PHP Wiki - Listenarchive