我目前正在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);
答案 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);
..无需再次绑定相同的变量/值。