php和MySQL中简单的喜欢/不喜欢评级系统

Posted

技术标签:

【中文标题】php和MySQL中简单的喜欢/不喜欢评级系统【英文标题】:Simple like/dislike rating system in php and MySQL 【发布时间】:2011-08-14 18:40:14 【问题描述】:

我想为我的随机视频网站添加一个简单的评分系统 (id = youtube id) 我对 phpmysql 没有太多经验,我不确定如何以这种方式使用提交按钮更新字段:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name"rateform">
  <input name="rateup" type="image" src="up.png" id="rateup" value="rateup" />
  <input name="ratedown" type="image" src="down.png" id="ratedown" 
   value="ratedown" />
</form>
<?PHP
mysql_connect(",",",",",")or die(mysql_error());
mysql_select_db(",")or die(mysql_error());
if ($_POST['rateup'])

    mysql_query("UPDATE utube SET rating = rating + 1 
                WHERE (id = $pageid)"); else if ($_POST['ratedown']) 
    mysql_query("UPDATE utube SET rating = rating - 1 
                WHERE (id = $pageid)");

?>

我需要做些什么来将 html 和 php 链接在一起吗? 所有语句都自己返回正确的值(即 $pageid) 但是当我按下按钮时,任何字段都没有发生任何事情。

当我将 mysql 查询直接放入 phpmyadmin 时,它也可以工作, 我只是不确定 html 如何与 php 通信? 如果有人能告诉我这是如何工作的,我将不胜感激,以便我可以让我的脚本正常工作。

【问题讨论】:

$pageid 来自哪里? 代码中可能存在 SQL 注入,请将 WHERE (id = $pageid)" 替换为 WHERE (id = '$pageid')" (注意引号) 并确保 $pageid 使用 mysql_real_escape_string() 进行转义,见:***.com/questions/332365/… @mario @Johan 哦,哇,我为此感到愚蠢。 $pageid 需要用引号引起来,因为它是一个 varchar 字符串。添加引号修复了所有问题,现在评级工作。 $pageid 只是从我的 id 表中返回一个随机值(这样每次刷新都会提供一个随机视频来观看。)我会看看修复 sql 注入,再次感谢! 【参考方案1】:

让我们开始寻找问题所在:我只能想象两个原因:

PHP 未连接到数据库。尝试直接从您的脚本执行查询(将其从if 语句中取出。 if 语句由于某种原因是错误的:尝试将 mysql_query 替换为 print('up');print('down');

顺便说一句,else if 是一个词的陈述。您可以将其替换为elseif

【讨论】:

非常感谢,它帮助我发现了问题。我做的mysql_query肯定有问题。【参考方案2】:

图像按钮发布点击坐标值,除了表单名称。输入名称_x & 输入名称_y

if ($_POST['rateup_x'])

    mysql_query("UPDATE utube SET rating = rating + 1 
      WHERE (id = $pageid)"); else if ($_POST['ratedown_x']) 
    mysql_query("UPDATE utube SET rating = rating - 1 
      WHERE (id = $pageid)");

【讨论】:

【参考方案3】:
<?PHP
mysql_connect("hostname","username","password")or die(mysql_error());
mysql_select_db("dbname")or die(mysql_error());
if ($_POST['rateup'])

    mysql_query("UPDATE utube SET rating = rating + 1 
                WHERE (id = $pageid)"); else if ($_POST['ratedown']) 
    mysql_query("UPDATE utube SET rating = rating - 1 
                WHERE (id = $pageid)");

?>

【讨论】:

以上是关于php和MySQL中简单的喜欢/不喜欢评级系统的主要内容,如果未能解决你的问题,请参考以下文章

在 javascript 中发布喜欢/不喜欢系统 php

推荐系统笔记:基于贝叶斯的协同过滤

PHP中的喜欢/不喜欢系统

PHP/mysql - 我的时间戳不喜欢在大于 (>) 语句中

MYSQL 按喜欢/不喜欢和受欢迎程度排序

使用 PHP、MySQL、Jquery 和 Ajax 创建 5 星评级系统