следующий короткий тестовый скрипт
<?php
define('DBHOST', '/tmp');
define('DBNAME', 'XXX');
define('DBUSER', 'XXX');
define('DBPASS', 'XXX');
$ids = array('OK251562715876', 'OK178469380239');
try {
$db = new PDO('pgsql:host=' . DBHOST . '; dbname=' . DBNAME, DBUSER, DBPASS, $options);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $db->prepare('select * from pref_money where id in ( ? )');
$sth->execute($ids);
while ($row = $sth->fetch(PDO::FETCH_ASSOC))
print_r($row);
} catch (Exception $e) {
exit('Database problem: ' . $e->getMessage());
}
?>
завершается с ошибкой:
Database problem: SQLSTATE[42P18]:
Indeterminate datatype: 7
ERROR: could not determine data type of parameter $2
Если я удаляю 2-й элемент массива, он работает нормально.
Есть ли способ заставить привязку работать для массива с несколькими элементами?
Я знаю, что могу подготовить полную строку оператора SQL, используя join () и т. Д., Опуская знак вопроса, но затемМне нужны дополнительные усилия, чтобы предотвратить внедрение SQL в мой веб-скрипт ...
Использование PostgreSQL 8.4.6 с PHP 5.1.6 под CentOS 5.5