php和MySQL中简单的喜欢/不喜欢评级系统
Posted
技术标签:
【中文标题】php和MySQL中简单的喜欢/不喜欢评级系统【英文标题】:Simple like/dislike rating system in php and MySQL 【发布时间】:2011-08-14 18:40:14 【问题描述】:我想为我的随机视频网站添加一个简单的评分系统 (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
来自哪里?
代码中可能存在 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中简单的喜欢/不喜欢评级系统的主要内容,如果未能解决你的问题,请参考以下文章