Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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_real_escape_string(),但允许名称使用撇号_Php_Mysql - Fatal编程技术网

Php mysql_real_escape_string(),但允许名称使用撇号

Php mysql_real_escape_string(),但允许名称使用撇号,php,mysql,Php,Mysql,这可能是一件平常的事,但我有一个问题。允许撇号,同时仍保持mysql\u real\u escape\u string()标记 我有这样一个:$name=stripslashes(mysql\u real\u escape\u string($\u POST['stadium\u name']) 我用这个来测试它: $getInfoX = mysql_fetch_array(mysql_query("SELECT * FROM `stadiums` WHERE `stadium_name` =

这可能是一件平常的事,但我有一个问题。允许撇号,同时仍保持
mysql\u real\u escape\u string()
标记

我有这样一个:
$name=stripslashes(mysql\u real\u escape\u string($\u POST['stadium\u name'])

我用这个来测试它:

$getInfoX = mysql_fetch_array(mysql_query("SELECT * FROM `stadiums` WHERE `stadium_name` = '$stadium_name'")) or die(mysql_error());
我可以做一个例子,比如
x';删除表成员--
或带有撇号的名称,如
Stade de l'Aube
。。。但是带撇号的名字给我带来了一个错误,比如:

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解在第1行“Aube”附近使用的正确语法

我该怎么办?

您的问题是:

$name = stripslashes(mysql_real_escape_string($_POST['stadium_name']));
撤销逃逸

您可能已经看到该函数用作的解决方案。如果要应用它,请在数据库转义函数之前执行。

您的问题是:

$name = stripslashes(mysql_real_escape_string($_POST['stadium_name']));
撤销逃逸


您可能已经看到该函数用作的解决方案。如果要应用它,请在数据库转义函数之前执行

通过
stripslashes
链接
mysql\u real\u escape\u string
的结果,这基本上删除了出于安全原因添加的所有内容
mysql\u real\u escape\u string

因此,如果您有
$stadium\u name=“Fred's stadium”
作为输入
mysql\u real\u escape\u string($stadium\u name)
返回
“Fred's stadium”
,可以将其包含在查询中

"SELECT * FROM `stadiums` WHERE `stadium_name` = 'Fred\'s Stadium'"
作为MySQL查询。在
mysql\u real\u escape\u字符串
输出上调用
stripslashes
,将删除'so you send the query'前面的\项

"SELECT * FROM `stadiums` WHERE `stadium_name` = 'Fred's Stadium'"
to MySQL认为您的字符串是“Fred”,后跟一些垃圾(这可能会很危险)

解决方案是使用一个单独的变量来存储mysql\u real\u escape\u string的结果,因为它在数据库查询中使用是正确的,但不适合显示回用户

我希望这有帮助

问候


TC

您通过
stripslashes
链接
mysql\u real\u escape\u string
的结果,这基本上删除了出于安全原因添加的所有内容
mysql\u real\u escape\u string

因此,如果您有
$stadium\u name=“Fred's stadium”
作为输入
mysql\u real\u escape\u string($stadium\u name)
返回
“Fred's stadium”
,可以将其包含在查询中

"SELECT * FROM `stadiums` WHERE `stadium_name` = 'Fred\'s Stadium'"
作为MySQL查询。在
mysql\u real\u escape\u字符串
输出上调用
stripslashes
,将删除'so you send the query'前面的\项

"SELECT * FROM `stadiums` WHERE `stadium_name` = 'Fred's Stadium'"
to MySQL认为您的字符串是“Fred”,后跟一些垃圾(这可能会很危险)

解决方案是使用一个单独的变量来存储mysql\u real\u escape\u string的结果,因为它在数据库查询中使用是正确的,但不适合显示回用户

我希望这有帮助

问候


TC

使用PDO或MySQLI,mysql\u real\u escape\u string将为您处理此问题。您收到的错误来自mysql而不是php是的?为什么在
mysql\u real\u escape\u string
为您转义后仍要剥离斜杠?您的问题是
stripsalshes()
。去掉那个。(可以追溯到magic_quotes解决方法。但在这里,它的应用顺序甚至错误。)使用PDO或MySQLI,mysql_real_escape_字符串将为您处理此问题。您收到的错误来自mysql而不是php是的?为什么在
mysql\u real\u escape\u string
为您转义后仍要剥离斜杠?您的问题是
stripsalshes()
。去掉那个。(可以追溯到magic_quotes解决方法。但在这里,它的应用顺序甚至错误。)因此,使用mysql_real_escape_字符串存储它,但在显示时。。。使用strip_斜杠?是的,在回显之前使用php.net/htmlentities,这样就不会将HTML注入到页面中。因此,使用mysql_real_escape_字符串存储它,但在显示时。。。使用strip_斜杠?是的,在回显之前使用php.net/htmlentities,这样就不会将HTML注入页面。