【发布时间】:2014-08-28 10:15:03
【问题描述】:
是否可以以任何方式插入某个列值的增量?
$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?我认为应该有更好的方法吗?
编辑:更新也不起作用(不会成功准备 - 返回错误:有什么想法可能是错的吗?)
$stmt = $this->mysqli->prepare('UPDATE `users` SET `newsletter` = ?, `date_last` = NOW(), points=points+?, WHERE `email` = ?');
【问题讨论】:
-
将 playcount 列设为
AUTO_INCREMENT -
这不会达到我想要的效果。对于每个创建的用户,它只会将该值增加一。当 UPDATE 被调用时呢?请查看我编辑的问题
-
您的查询包含语法错误。 WHERE 之前有一个逗号,因此您的更新将失败。您不能使用 INSERTS 添加信息的
++风格 - 这没有任何意义,您不能增加不存在的内容。这类任务通常通过在列上添加唯一约束来完成,然后使用 ON DUPLICATE KEY UPDATE 方法。
标签: php mysqli insert prepared-statement