使用php和MySQL实现简单的喜欢/不喜欢评分系统

4

我希望在我的随机视频网站(id = YouTube id)上添加一个简单的评分系统。
我没有太多php和MySQL经验,也不确定如何使用提交按钮以这种方式更新字段:

<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 是从哪里来的? - mario
你的代码可能存在SQL注入漏洞,请将 WHERE (id = $pageid) 替换为 WHERE (id = '$pageid')(注意引号),并确保使用 mysql_real_escape_string() 对 $pageid 进行转义处理,参考:https://dev59.com/_3RC5IYBdhLWcg3wVvYt - Johan
哇,我感觉自己太蠢了。$pageid需要加引号,因为它是一个varchar字符串。添加引号解决了所有问题,现在评分功能可以正常工作了。$pageid只是从我的ID表中返回一个随机值(这样每次刷新页面都会得到一个随机视频)。我会研究如何修复SQL注入问题,再次感谢! - blodey
3个回答

2

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

  • PHP没有连接到数据库。尝试直接从脚本中执行查询(将其从if语句中取出)。
  • if语句出了某些问题:尝试用print('up');print('down');替换mysql_query来检查。

顺便说一句,else if是一个单词语句。你可以用elseif替换它。


非常感谢,这帮助我找到了问题所在。我制作的mysql_query肯定有问题。 - blodey

0

图片按钮发布被点击的坐标值,除表单名称外。inputname_x & inputname_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)");}

0
<?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)");}

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接