2014-08-28 64 views
0

是否有可能以任何方式对插入某个列值的增量?MySQLi准备的语句:插入一个值的增量

$stmt->$this->mysqli->prepare('INSERT INTO `users` (`email`,`date_added`,`playCount`) VALUES (?, NOW(), ?)'); 

$stmt -> bind_param('si',$email, WHAT); // playCount++ somehow ... 
$stmt -> execute(); 

我知道我可以使用UPDATE要做到这一点,但我需要检查,如果用户存在先不要只为一列INSERT和UPDATE之后?我认为应该有更好的方法?

编辑:更新也将无法正常工作(不备成功,返回false:任何想法可能是错误的?)

$stmt = $this->mysqli->prepare('UPDATE `users` SET `newsletter` = ?, `date_last` = NOW(), points=points+?, WHERE `email` = ?'); 

reference

+1

使playcount列要'AUTO_INCREMENT' – hjpotter92 2014-08-28 10:15:42

+0

这不会达到我想要的。它只会为每个创建的用户增加一个值。什么时候更新被称为?请参阅我编辑的问题 – trainoasis 2014-08-28 10:39:39

+0

您的查询包含语法错误。在WHERE之前有一个逗号,所以你的更新会失败。你不能用'INSERT'来添加信息的'++'风格 - 它只是没有意义,你不能增加一些不存在的东西。这种类型的任务通常通过在列上添加唯一约束来完成,然后使用ON DUPLICATE KEY UPDATE方法。 – 2014-08-28 10:53:43

回答

0
"INSERT INTO users (`email`,`date_added`,`playCount`) 
VALUES (?, NOW(), (SELECT MAX(playCount) from users)+1);"