PHP/MySQL(电子小说)防止单个用户多重评级

标签 php mysql

在我的网站(使用 CMS eFiction )上,用户可以留下对 1-10 章进行评级的评论,如果他们不对该章进行评级,则会在表中记录为 -1。我想防止用户留下多个评分。我的 PHP 知识非常有限,我相信代码应该放在 review.php 中的第 144 行之前( on github here )

dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_reviews (item, type, reviewer, review, rating, date, uid, chapid) VALUES ('$item', 'ST', '$reviewer', '$review', '$rating', now(), '".(USERUID && isNumber(USERUID) ? USERUID : 0)."', '$chapid')");

我正在尝试为 fanfiction_reviews 表编写一个查询,如果找到与 uid(用户)和 chapid 匹配并且具有评级的条目,则向他们抛出一条错误消息,表明他们已经对该章进行了评级。 ETA:为了回答下面的问题,我希望忽略或不记录第二个评级,而不是替换以前的评级。

正如我提到的,我的 PHP 是有限的,我只是尝试模仿我在 eFiction 中其他地方找到的内容。编辑:下面最初更改了 useruid = '$uid' 这给了我一个致命的 mysql 错误。我将其更改为 uid = '$uid' 并停止了错误

$ratecount = dbquery("select count(rating) as count FROM ".TABLEPREFIX."fanfiction_reviews WHERE item = '$item' AND chapid = '$chapid' AND uid = '$uid' AND rating != '-1'");
if($ratecount != 0) $output .= write_error(_MULTIPLERATINGS);

将上述内容粘贴到文件中后,它确实给了我“多重评级错误”消息,但它仍在记录评级。如何让它不记录评级(或将其更改为非评级 -1)

预先感谢您的帮助!

最佳答案

尝试 if($ratecount.count != 0) $output .= write_error(_MULTIPLERATINGS);。您也可能需要将其格式设置为 if($ratecount["count"] != 0) $output .= write_error(_MULTIPLERATINGS);

作为另一种意外情况,您可能需要循环遍历结果集,或者在其中放入 [0] 来指示您想要访问结果集中第一行的“count”字段。您的里程可能会有所不同,具体取决于 dbquery() 的具体功能。请记住,在 php 中有许多不同的方式连接数据库并与之交互,不同的实现可能以不同的方式返回结果,并且可能遵循略有不同的约定。 AFAIK,dbquery() 不是 php 中的标准函数。

关于PHP/MySQL(电子小说)防止单个用户多重评级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751844/

相关文章:

php - while、if 和 else 条件

mysql - mysql中如何计算时间差

html - 我如何在不打开新页面进行编辑的情况下在 jsp 页面中编辑我的表,它应该反射(reflect)在数据库中?

php - MySQL 插入不起作用

php - 在 PHP5 中使用 func_get_args() 通过引用传递变量?

php - 如何添加到 MySQL 列?

php - Laravel 中的表格摄入和质量分配