MySQL int字段在DGNews点击计数器中自动重置

时间:2015-01-12 11:33:52

标签: php mysql code-injection

我在我的网站中使用自定义版本的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注入的结果还是什么?谁能想出这里发生了什么?

谢谢

更新 它重置所有行上的所述字段,而不是单行


2 个答案:

答案 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。