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