我在我的网站中使用自定义版本的DGNews(现已解散)脚本。在该脚本中,有一种简单的方法来计算命中数:
$queryfull = "SELECT * FROM news_publish WHERE id='$newsid'";
$qryfull = @mysql_query($queryfull,$connect) or die ("Wrong Query");
$rowfull = mysql_fetch_array ($qryfull);
$c=$rowfull[click];
$c++;
$d=$c;
@mysql_query("update news_publish set click='$d' where id=$newsid");
我知道这个脚本使用的是过时的mysql查询方法,而我目前无法进行全面升级。 但我的问题是,点击' (int)数据库的所有行中的字段,偶尔重置为1。我无法想象它是如何发生的。它只在一年左右发生一次。这是某种尝试mysql注入的结果还是什么?谁能想出这里发生了什么?
谢谢
更新 它重置所有行上的所述字段,而不是单行
答案 0 :(得分:0)
$queryfull = "SELECT * FROM news_publish WHERE id='$newsid'";
$qryfull = @mysql_query($queryfull,$connect) or die ("Wrong Query");
$rowfull = mysql_fetch_array ($qryfull);
$c=$rowfull['click'];
$d=$c++;
@mysql_query("update news_publish set click='$d' where id=$newsid");
但您可以在评论
中按照建议的Barmar运行更新查询@mysql_query("update news_publish set click=click+1 where id=$newsid");
那就是全部
答案 1 :(得分:0)
我无法准确知道溢出发生的位置,但这对您有帮助。
alter news_publish modify click bigint
bigint远远大于int。