這是我使用的代碼:PDO未能準備語句超過13佔位符
self::$DB->prepare($query, $types);
當$查詢和類型:
//$query
UPDATE Permisos
SET
empleado_id = ?,
agregar_mensaje = ?,
borrar_mensaje = ?,
agregar_noticia = ?,
borrar_noticia = ?,
agregar_documento = ?,
borrar_documento = ?,
agregar_usuario = ?,
borrar_usuario = ?,
agregar_empresa = ?,
borrar_empresa = ?,
agregar_tarea = ?
WHERE
id = ?
//$types
Array(
[0] => integer
[1] => boolean
[2] => boolean
[3] => boolean
[4] => boolean
[5] => boolean
[6] => boolean
[7] => boolean
[8] => boolean
[9] => boolean
[10] => boolean
[11] => boolean
[12] => integer
)
一切都很正常,但是當它們分別是:
//$query
UPDATE Permisos SET
empleado_id = ?,
agregar_mensaje = ?,
borrar_mensaje = ?,
agregar_noticia = ?,
borrar_noticia = ?,
agregar_documento = ?,
borrar_documento = ?,
agregar_usuario = ?,
borrar_usuario = ?,
agregar_empresa = ?,
borrar_empresa = ?,
agregar_tarea = ?,
borrar_tarea = ?
WHERE
id = ?
//$types
Array(
[0] => integer
[1] => boolean
[2] => boolean
[3] => boolean
[4] => boolean
[5] => boolean
[6] => boolean
[7] => boolean
[8] => boolean
[9] => boolean
[10] => boolean
[11] => boolean
[12] => boolean
[13] => integer
)
它失敗,出現以下消息:
<b>Warning</b>: PDO::prepare() [<a href='pdo.prepare'>pdo.prepare</a>]: SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); the classname must be a string specifying an existing class in <b>C:\wamp\www\intratin\JP\includes\empleado\mapper\Permiso.php</b> on line <b>137</b><br />
不要緊,我添加哪些領域或刪除時,出現超過13個佔位符每次。
非常感謝,我從MDB2遷移,並認爲,酷,相同的語法,因爲它的工作,直到現在︰$ 有什麼辦法將類型傳遞給PDO :: prepare,以便它正確地轉義它們,或者是unnecesary? – 2010-03-16 17:35:56
我不認爲你只能在一次調用中傳遞所有類型......我想說,當你調用'bindParam'或'bindValue'時,你必須一個接一個地傳遞它們:你已經傳遞了使用這兩個值中的一個值 - 他們都可以將該類型作爲一個可選參數;;;如果你知道你的數據的類型,通過它不會傷害^^ – 2010-03-16 17:38:17