-1

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

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);
4

2 回答 2

1

您使用ANDinpassword=? AND age=?替换and. 代替:,

INSERT INTO user (user,password,age) VALUES (?,?,?) ON DUPLICATE KEY UPDATE password=?,age=?
于 2013-08-11T20:30:07.850 回答
0

听起来您将字符串绑定为某个地方的整数...但是,只需使用以下命令:

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

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

于 2013-08-11T20:31:32.807 回答