每次查看某些 map 时,我都会使用以下代码将数字插入“mviews”。
问题 1. 在下面的代码中,我应该在何处添加“ON DUPLICATE KEY UPDATE mviews = mviews+ 1”以便它可以在重复时递增?
问题2.如何限制一个IP的计数?
问题 3. 如何限制此 IP 仅在 24 小时内增加 'mviews'?每24小时只计算第一次观看,第一次观看后24小时内的其余观看不计算在内。
<?php
require_once 'db_conx.php';
$result = mysql_query( "UPDATE profiles SET mviews = '1' WHERE pid = '2' ") or die (mysql_error());
/*ON DUPLICATE KEY UPDATE mviews = mviews+ 1 */
if($result){
echo "Views + 1";
}
else {
echo "Views inser error";
}
mysql_close($con);
?>
最佳答案
DUPLICATE KEY UPDATE
与 INSERT
一起使用,而不与 UPDATE
语句一起使用 DOCS
一个IP的计数会是这样
SELECT COUNT(*) FROM profiles WHERE IP = "127.1.0.0";
[如果你不是在找我上面写的]
如果IP地址是你的主键
INSERT INTO
profiles (ip,views)
VALUES ("127.1.0.0",1)
ON DUPLICATE KEY
UPDATE views=views+1;
如果你想让你的代码正常工作[不要使用 mysql_* 也转义用户输入]
<?php
require_once 'db_conx.php';
$result = mysql_query( "SELECT * FROM profiles WHERE pid =2") or die (mysql_error());
/*ON DUPLICATE KEY UPDATE mviews = mviews+ 1 */
if(mysql_num_rows($result) == 0){
mysql_query( "INSERT INTO profiles (views) value(1) ") or die (mysql_error());
}else {
mysql_query( "UPDATE profiles SET mviews = mviews +1 WHERE pid = '2' ") or die (mysql_error());
}
mysql_close($con);
?>
关于PHP:如何增加表行中的值以计算 View 并将计数限制为一个 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830873/