前幾天改別人的程式時,用到 Pear DB 的 prepare / binding query 來修改資料:
$sql = "update log set 'enable' = ? where 'size' != 100";
$db->query($sql, array('true') );
但是程式執行卻一直噴錯誤訊息:
DB Error: mismatch
奇怪,問號只有一個啊,語法丟到 PhpMyAdmin 也可以正常執行,但為什麼會錯!?
搞了半天,原來 Pear DB 支援的 placeholder 有三種:
- ?
- !
- &
好死不死 SQL 後半段有個「!=」,所以就 GG 了。這個 error 跟之前全形空白真的有拼 ….。