[英]Is it possible to make an insert or an update in the same sql query?
我有一個問題似乎很容易,但我沒有通過惡意解決它
我有這個表與網站訪問者的統計數據
+-----------------------------+
+ date | visits +
+-----------------------------+
+ 2014-03-17 | 198 +
+ 2014-03-18 | 259 +
+ 2014-03-19 | 94 +
+-----------------------------+
我的問題是將數據插入表中的正確方法是什么。
目前我在做的是:
$date = date("Y-m-d");
$result = mysql_query("SELECT Count(*) as count FROM table WHERE date = '$date'");
$row = mysql_fetch_array($result);
$count = $row['count'];
if($count > 0){
mysql_query("UPDATE table SET visits = visits+1 WHERE date = '$date'");
}else{
mysql_query("INSERT INTO table (`date`, `visits`) VALUES ('$date', '1');");
}
這是更新表格的正確方法還是更好的方法? 是否可以僅使用一個SQL查詢來更新它,例如:
mysql_query("If row exists update table else insert");
我不知道這是否可行。
非常感謝你提前! 如果你能幫助我,我將非常感激。
是的,如果您的date
是表格中的關鍵
INSERT INTO `table`(`date`, `visits`)
VALUES(`$date`, `1`)
ON DUPLICATE KEY UPDATE
`visits`=`visits`+1
參考: MYSQL :: INSERT ... ON DUPLICATE KEY UPDATE
注意:您正在使用不推薦使用的mysql_*
函數(意味着過時,不再受支持,不再修改),因此請嘗試使用mysqli_*
或PDO
。
嘗試
INSERT INTO `tabelname`(`date`, `visits`) VALUES ($date,1)
ON DUPLICATE KEY UPDATE `visits` = `visits`+1
注意:必須將date
列設置為UNIQUE索引
提示:不要使用mysql關鍵字作為列名(日期)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.