executePrepared抛出Phalcon \ Db \ Exception并显示消息Invalid bind type参数

时间:2014-01-22 18:31:17

标签: php pdo phalcon

我正在尝试使用Phalcon(1.2.5 - 1020540)\ Phalcon \ Db \ Adapter \ Pdo \ Mysql-> executePrepared()

exectePrepared需要三个论点:

public PDOStatement executePrepared (
                PDOStatement $statement, 
                array $placeholders, 
                array $dataTypes)

但我在文档中找不到如何填充$ dataTypes。

我尝试:

   $dataType[] = \PDO::PARAM_INT;

和:

   $dataType[] = \Phalcon\Db\Column::TYPE_INTEGER;

但使用相同的“无效绑定类型参数”消息

在1.2.4上也是如此,我升级尝试修复它。

欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

通常phalcon需要使用以下语法编写db参数:

array("columnName => ':value:'", 'bind' => array('value' => 'foo'));

你试过吗

array('column_name' => \Phalcon\Db\Column::TYPE_INTEGER);

认为这应该有效,因为phalcon内部使用密钥很多(例如https://github.com/phalcon/cphalcon/blob/master/ext/db/adapter/pdo.c搜索dataType)

答案 1 :(得分:0)

您还可以使用describeColumns($ table)为给定的表请求PDO-Adapter(例如Phalcon \ Db \ Adapter \ Pdo \ Mysql)并返回Phalcon \ Db \ Column,然后您可以请求getBindType()

$fields = $this->db->describeColumns($table);
foreach ($fields as &$field) {
    $objectFields[$field->getName()] = $field->getBindType();
}