0

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

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的非评级)

提前感谢您的帮助!

4

1 回答 1

0

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

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

于 2017-06-26T01:46:40.633 回答