Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-我有两个查询,但一个不工作,另一个工作。请帮帮我好吗?_Php_Mysql - Fatal编程技术网

Php MySQL-我有两个查询,但一个不工作,另一个工作。请帮帮我好吗?

Php MySQL-我有两个查询,但一个不工作,另一个工作。请帮帮我好吗?,php,mysql,Php,Mysql,讨厌的动作效果很好!但像这样的人却没有。几乎是同一件事 有人能帮我吗?一个好的计划是检查mysql\u错误的返回值,从mysql获取实际的错误,您可以通过简单地回显mysql\u错误来检查这一点 除此之外,您真的希望在调用header之后抛出一个exit,以实际终止脚本的执行,并且您还希望添加mysql\u real\u escape\u字符串以转义传递给mysql的GET参数。您不希望使用用户提供的数据,例如未扫描或未筛选的数据。like是一个关键字。使用反勾号: if ($_GET['act

讨厌的动作效果很好!但像这样的人却没有。几乎是同一件事


有人能帮我吗?

一个好的计划是检查mysql\u错误的返回值,从mysql获取实际的错误,您可以通过简单地回显mysql\u错误来检查这一点


除此之外,您真的希望在调用header之后抛出一个exit,以实际终止脚本的执行,并且您还希望添加mysql\u real\u escape\u字符串以转义传递给mysql的GET参数。您不希望使用用户提供的数据,例如未扫描或未筛选的数据。

like是一个关键字。使用反勾号:

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'].'');
}
一般来说,最好不要以关键字命名列,如,CASE,SELECT,WHERE等

范例

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

或者,如果您的id是整数,您可以在这种特殊情况下执行以下操作。。。。其中id=.int$\u GET['id']

这是什么意思。在您的查询之后?使用mysql添加基本错误检查\u error欢迎使用堆栈溢出!您没有在查询中执行任何错误检查,因此难怪您无法看到查询失败时会发生什么。中概述了如何正确显示错误。此外,您显示的代码易受攻击。使用适当的库卫生方法,如mysql\u real\u escape\u string作为经典的mysql库,或者切换到PDO和prepared语句。我希望您能够意识到,接受用户输入而不转义mysql会带来严重的安全风险。。。但在主题上:如果您将查询粘贴到phpmyadmin或echo MySQL\u error(如@Dagon所建议的)中,MySQL会怎么说?所有这些都是正确的和好的观点,但MySQL\u real\u escape\u string在这种特定情况下无法防止漏洞。仔细看,这是一个链接,用户看不到URL,我在两个页面之间重定向…@Frederick你仍然需要逃避SQL。对于任何有一点技术知识的人来说,看到这个URL都是很平常的。一定要像这里建议的那样小心回击。知道mysql的基本保留条款并没有什么坏处。谢谢a1ex07!!!我试试看!但是我自己可以用mysql\u real\u escape\u string??这是我的第一个PHP和MySQL网站。@Frederick Marcoux:添加了MySQL\u real\u escape的示例_string@a1ex07它不起作用…————————”但是你能帮我处理mysql\u real\u escape\u字符串吗?谢谢你的示例,我添加了它。
mysql_query("UPDATE blog SET `like`=`like`+1 WHERE id='".
       mysql_real_escape_string($_GET['id'])."'");