2014-08-28 72 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);"