我有这个小脚本来更新报告计数器
/*********************************
* Report an ad as inappropriate
* This happens when a user click
* the "Report ad" link on the ad
* view page.
*
* The ad can then be reviewed
* and disabled.
*
* @param int | The ad id
*********************************/
function report_ad($aid) {
$row = $this->db->dbh->query('UPDATE '. $this->config->db_prefix .'_adverts SET been_reported = 1, num_reports = num_reports + 1 WHERE aid = '.$aid.'');
$row->execute();
}
和这个jQuery来处理链接点击
$("#report-ad").click(function(){
var conf = confirm("Do you want to report this ad as inappropriate?");
var aid = {$smarty.get.aid}
if(conf == true) {
$.ajax({
url: 'reportad.php',
type: 'post',
data: {literal}{aid: aid}{/literal},
success: function(data) {
alert("The ad has been reported as inappropriate");
},
error: function(data) {
alert("An error occured");
}
});
}
return false;
});
reportad.php只包含这个:
$adverts = new Adverts();
$adverts->report_ad($_POST["aid"]);
由于某种原因,它将num_reports更新为2,所以如果它是1,它将变为3然后变为5,依此类推。我看不出哪里有问题。
答案 0 :(得分:1)
帮助我们帮助您:追踪错误发生的位置:
是否多次调用了funktion?如果你是php调试的新手,
mail('me@host.com','message');
是不好的做法,但很快就能做到。 (还要检查file_put_content()以进行简单的非基于对象的日志记录)。
另外,你不是在
之后错过了半音var aid = {$smarty.get.aid}
迎接
编辑:不确定query()是否执行预准备语句,或直接运行查询?在这种情况下,query()和execute()将是你的啤酒寻找的双倍。