在重复键上,在更新时将1列设置为零

时间:2013-08-11 20:24:20

标签: php mysql pdo

我目前正在mysql中试验insert ignore .. on duplicate key update ..语句。我有以下查询;

INSERT INTO user (user,password,age) VALUES (?,?,?) ON DUPLICATE KEY UPDATE password=? AND age=?

我在pdo上有以下绑定;

array (size=5)
  0 => string 'hello' (length=7)
  1 => string 'world' (length=7)
  2 => int 24
  3 => string 'welcome' (length=7)
  4 => int 24

user列是唯一的,但其他列则不是。还有自动递增的id字段,它是主键。

然而,存在问题。每当执行update函数时,它会将密码设置为0(不会发生这种情况)

那么,我在这里做错了什么?

注意:我使用的是PDO库

[编辑]:根据评论的代码;

$statement = $connection->prepare($sql);
$exec = $statement->execute($bindings);

2 个答案:

答案 0 :(得分:1)

您在AND password=? AND age=?替换and时使用,
替换:

INSERT INTO user (user,password,age) VALUES (?,?,?) ON DUPLICATE KEY UPDATE password=?,age=?

答案 1 :(得分:0)

这听起来像是将字符串绑定为某个整数...但是,只需使用它:

 INSERT INTO user (user,password,age) VALUES (?,?,?) 
 ON DUPLICATE KEY UPDATE password=VALUES(password), age=VALUES(age);

..无需再次绑定相同的变量/值。