我在PDO中基本上是新手,大约3天前才使用它。苦苦挣扎让我的东西与它一起工作。在这里四处看看,但这让我更加困惑,因为我找不到匹配的问题。
我有两个使用PDO开发的更新mysql数据库功能。一个工作,另一个不工作。无法弄清问题究竟在哪里,因为一切看起来都很好。这些是代码:
不工作
// NOT WORKING
$updv = "UPDATE affiliate_link SET cj_tracker_url=:cjtr, cj_aid=:midr, cj_pid=:fidr, cj_isc:cisr WHERE ID=:ID";
$arrv = array(
'ID' => 1,
'cjtr' => $cju,
'midr' => $aai,
'fidr' => $pai,
'cisr' => $gis
);
$exdv = $condb -> prepare($updv, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$exdv -> execute($arrv);
WORKING
//WORKING
$updb = "UPDATE right_sidebar SET topright_sidebar=:trs, middleright_sidebar=:mrs, bottomright_sidebar=:brs WHERE ID=:ID";
$arrb = array(
"ID" => 1,
"trs" => $trb,
"mrs" => $mrb,
"brs" => $brb
);
$exdb = $condb -> prepare($updb, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$exdb->execute($arrb);
希望有人能给我一些线索。以下是错误消息:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in
最好的问候
答案 0 :(得分:3)
你错过了一个“=” - 你在非工作代码中的查询应该是:
$updv = "UPDATE affiliate_link SET cj_tracker_url=:cjtr, cj_aid=:midr, cj_pid=:fidr, cj_isc=:cisr WHERE ID=:ID";
答案 1 :(得分:1)
你的SQL中有一个拼写错误
cj_isc:cisr
什么时候应该
cj_isc=:cisr
你错过了=符号。