Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 SQL中允许撇号_Php_Mysql - Fatal编程技术网

Php SQL中允许撇号

Php SQL中允许撇号,php,mysql,Php,Mysql,在任何人要求之前,我在每次插入中都使用了mysql\u real\u escape\u string()。 然而,我希望用户能够键入撇号,但它们会变成反斜杠。然而,我也希望他们能够使用反斜杠 用户是可信的,但是否可以允许这些字符同时防止SQL注入?是的,只需使用参数化查询 看看这个 基本概念是在添加参数之前编译搜索查询,这使得SQL注入变得不可能。您可以使用函数strip\u slashes删除撇号插入的所有斜线 因此,您可以使用mysql\u real\u escape\u string()将

在任何人要求之前,我在每次插入中都使用了
mysql\u real\u escape\u string()。
然而,我希望用户能够键入撇号,但它们会变成反斜杠。然而,我也希望他们能够使用反斜杠


用户是可信的,但是否可以允许这些字符同时防止SQL注入?

是的,只需使用参数化查询

看看这个


基本概念是在添加参数之前编译搜索查询,这使得SQL注入变得不可能。

您可以使用函数strip\u slashes删除撇号插入的所有斜线

因此,您可以使用mysql\u real\u escape\u string()将数据插入数据库。然后,当您想要将数据拉到前端时,您可以通过函数stripslashes()运行它,它将删除所有的斜杠


你也应该考虑使用mySQLI作为MySQL被禁止。

如果使用OP提到SQL注入,使用弃用的< MySQL**>代码>函数不是一个好的答案。一个有意破坏数据的转义函数将是非常危险的。幸运的是,mysql\u real\u escape\u string()
不是这样工作的。这应该是一个“近似重复的”投票,而不是一个答案。@lvaroG.Vicario 1。答案是一样的,但问题是不同的。OP认为他的问题是“如何允许撇号”——这可能就是他寻求解决方案失败的原因。简单地以重复的形式结束有些无益,因为他没有意识到“允许”的概念是有缺陷的,在他意识到之前,另一个问题似乎是不正确的。2.不管怎样,我距离将问题标记为重复问题所需的代表还差200分,所以我在这里只能给出一个答案。我不是在问如何防止SQL注入。我问的是如何“避开”撇号变成反斜杠等事实,并在不允许SQL的情况下显示这些字符injections@DorianHuxley这就是问题所在。没有充分的理由乱搞mysql\u real\u escape\u字符串。这不是很安全,而且你在角色替换上会遇到无休止的问题。问题的真正解决方案是使用参数化查询正确地处理问题,安全性不再依赖于转义用户的输入。这反过来允许您使用任何您喜欢的内容,包括引号和撇号,而不必担心它们被“安全”字符替换。