phpbar.de logo

Mailinglisten-Archive

[php] PDO mit bindValue (mal wieder)

[php] PDO mit bindValue (mal wieder)

Yannik Hampe yannik at cipher-code.de
Mon Feb 4 17:14:07 CET 2008



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