2014-01-22 64 views
0

我試圖使用\多爾康\ DB \適配器\ PDO \ Mysql-> executePrepared()與多爾康(1.2.5 - 1020540)executePrepared拋出多爾康 DB 異常與消息無效綁定類型參數

execte準備期待三個參數:

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

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

我嘗試:

$dataType[] = \PDO::PARAM_INT; 

,並用:

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

但具有相同的 '無效的綁定類型參數' 消息

同樣發生在1.2.4,我升級試圖解決它。

歡迎任何建議。

回答

2

通常爾康預計分貝參數的語法如下:

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

你嘗試

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

認爲這應該工作作爲惠爾康內部工作了很多與關鍵詞(例如https://github.com/phalcon/cphalcon/blob/master/ext/db/adapter/pdo.c搜索的dataType)

+0

完美!如果我使用命名參數而不是'?'有用!很多謝謝@dompie – corretge

0

您還可以使用describeColumns($ table)爲給定表請求PDO適配器(例如Phalcon \ Db \ Adapter \ Pdo \ Mysql)並獲取Phalcon \ Db \ Column的,那麼你可以要求getBindType()

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