PDO - 更新数据库 - 类似模式 - 一个工作不是

时间:2014-03-06 14:37:28

标签: php mysql pdo

我在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

最好的问候

2 个答案:

答案 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

你错过了=符号。