MySQL - 我有两个查询但一个不起作用,一个查询。请帮帮我?

时间:2011-12-06 23:07:13

标签: php mysql

if ($_GET['action'] == "like")
{
mysql_query("UPDATE blog SET like=like+1 WHERE id=".$_GET['id']."");
header('Location: blog.php?id='.$_GET['id'].'');
}
else if ($_GET['action'] == "dislike")
{
mysql_query("UPDATE blog SET dislike = dislike+1 WHERE id = ".$_GET['id']."");
header('Location: blog.php?id='.$_GET['id'].'');
}

“不喜欢”行动效果很好!但“喜欢”却没有。它接近是一回事吗?

有人能帮助我吗?

2 个答案:

答案 0 :(得分:6)

LIKE是一个关键字。使用反引号:

UPDATE blog SET `like`=`like`+1 ...

一般来说,最好不要在关键字(LIKE,CASE,SELECT,WHERE等)之后命名列。

示例

mysql_query("UPDATE blog SET `like`=`like`+1 WHERE id='".
       mysql_real_escape_string($_GET['id'])."'");

或者如果你的id是整数,你可以在这个特殊情况下只做.... WHERE id=".(int)$_GET['id']

答案 1 :(得分:1)

一个好的计划是检查mysql_error()的返回值以从MySQL获得实际错误(你可以通过回显mysql_error()来检查这一点。)

除了你真的想在调用header()之后抛出一个exit()来实际终止脚本的执行,你还想添加mysql_real_escape_string以逃避GET参数你是传入MySQL。您不希望使用用户提供的数据,例如未转义或未经过滤的数据。