遵循Doctrine DBAL文档,我应该能够绑定一个字符串值列表,如下所示:
$sql = 'SELECT * FROM mytable WHERE myfield IN (?)';
$stmt = $conn->prepare($sql);
$stmt->bindValue('myfield', array('stringa', 'stringb', 'stringc'), \Doctrine\DBAL\Connection::PARAM_STR_ARRAY);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
这导致PHP通知并杀死我的脚本.
Notice: Array to string conversion in C:\www\eurocampings\vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php on line 142
Run Code Online (Sandbox Code Playgroud)
我做错什么了吗?
小智 8
来自Doctrine DBAL文档:
参数列表支持仅适用于Doctrine\DBAL\Connection :: executeQuery()和Doctrine\DBAL\Connection :: executeUpdate(),而不适用于预准备语句的绑定方法.
它位于此链接的末尾:http: //doctrine-dbal.readthedocs.org/en/latest/reference/data-retrieval-and-manipulation.html#list-of-parameters-conversion
来自学说文件:
$stmt = $conn->executeQuery('SELECT * FROM articles WHERE id IN (?)',
array(array(1, 2, 3, 4, 5, 6)),
array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
);
Run Code Online (Sandbox Code Playgroud)
对于仍然存在绑定值数组问题的用户,请将PARAM_INT_ARRAY或PARAM_STR_ARRAY常量与'executeQuery'方法一起使用,而不是将其绑定到预准备语句.这是它工作的唯一方式.