我有一个看似简单的问题,但我没有通过恶意来解决它
我有此表与网站访问者的统计数据
+-----------------------------+
+ 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");
我不知道这是否可行。
非常感谢您提前!如果你能帮助我,我将非常感激。
答案 0 :(得分:2)
是的,如果您的date
是表格中的关键
INSERT INTO `table`(`date`, `visits`)
VALUES(`$date`, `1`)
ON DUPLICATE KEY UPDATE
`visits`=`visits`+1
参考:MYSQL:: INSERT ... ON DUPLICATE KEY UPDATE
注意:您正在使用已弃用的mysql_*
个函数(表示已过时,不再受支持,不再修改),因此请尝试使用mysqli_*
或{{1 }}
答案 1 :(得分:0)
尝试
INSERT INTO `tabelname`(`date`, `visits`) VALUES ($date,1)
ON DUPLICATE KEY UPDATE `visits` = `visits`+1
注意:必须将date
列设置为UNIQUE index
提示:不要使用mysql关键字作为列名(日期)