【发布时间】:2016-08-12 05:51:29
【问题描述】:
我有一些代码
$query = 'INSERT INTO table
(foo, bar, baz)
VALUES
(:foo, :bar, :baz)
ON DUPLICATE KEY UPDATE foo = :foo,
bar = :bar,
baz = :baz';
$stmt = $dbc->prepare($query);
$stmt->bindValue(':foo', $foo, PDO::PARAM_STR);
$stmt->bindValue(':bar', $bar, PDO::PARAM_STR);
$stmt->bindValue(':baz', $baz, PDO::PARAM_STR);
$stmt->execute();
它抛出一个错误:
致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]:无效的参数号:绑定变量的数量与令牌的数量不匹配
显然,我的标记是绑定变量的两倍,但我拥有相同数量的唯一标记。所以我的问题是,每个令牌只能使用一次吗?我是否需要重命名每个令牌的第二个实例才能使其工作,或者有没有办法在不加倍 bindValue 语句的情况下做到这一点?
【问题讨论】: