Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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上的\character\u real\u escape\u string()解析字符串_Php_Mysql_Database - Fatal编程技术网

Php 去掉mysql上的\character\u real\u escape\u string()解析字符串

Php 去掉mysql上的\character\u real\u escape\u string()解析字符串,php,mysql,database,Php,Mysql,Database,我的问题似乎微不足道,但我还没有找到任何“好”的解决办法 首先是一个我听过很多答案的问题,什么时候我们需要用mysql\u real\u escape\u string()解析字符串?我的想法是,只有当在数据库中存储用户给定的数据时才需要它,这是一个好的规则吗 我的第二个问题,这才是真正的问题。当我用mysql\u real\u escape\u string()解析字符串时,它会在字符串中的任何有害字符之前放置一个特殊字符\,例如,如果函数找到一个',那么它将附加一个\,因此结果是\ 好吧,没

我的问题似乎微不足道,但我还没有找到任何“好”的解决办法

首先是一个我听过很多答案的问题,什么时候我们需要用
mysql\u real\u escape\u string()
解析字符串?我的想法是,只有当在数据库中存储用户给定的数据时才需要它,这是一个好的规则吗

我的第二个问题,这才是真正的问题。当我用
mysql\u real\u escape\u string()
解析字符串时,它会在字符串中的任何有害字符之前放置一个特殊字符
\
,例如,如果函数找到一个
'
,那么它将附加一个
\
,因此结果是
\

好吧,没关系,问题是当我从数据库中读取相同的字符串时,我还得到了
\
字符。有没有什么好办法摆脱
\
角色? 我的一个想法是使用str\u替换(“\\”,“,$string),但这是一种安全的好方法吗

谢谢大家!

您可以使用

例如:


您可以使用

例如:


不会在字符串中放置永久的
\
。它只在插入完成之前使用它们

字符串中出现反斜杠最有可能的原因是使用了,或者在您的环境中默认为启用了

在任何情况下,您都可以使用PHP删除它们:

$string = stripslashes($string);

mysql\u real\u escape\u string()
的另一个参考是。

不会在字符串中放置永久的
\
。它只在插入完成之前使用它们

字符串中出现反斜杠最有可能的原因是使用了,或者在您的环境中默认为启用了

在任何情况下,您都可以使用PHP删除它们:

$string = stripslashes($string);


mysql\u real\u escape\u string()
的另一个参考是。

添加的
\
字符实际上不会插入数据库。如果您在检索时获得这些,是因为启用了类似的功能,并且您将自动添加斜杠

这就是说,您真的应该切换到或,因为
mysql\uu
函数已被弃用。 您的第一个问题是正确的,任何用户输入都应该在插入之前正确转义。PDO和Mysqli允许您使用准备好的语句,并且还提供它们自己的转义函数

关于第二个问题,请尝试以下代码:

if (get_magic_quotes_gpc()) {
    $value = stripslashes($_POST['value']);
}

这将删除PHP自动添加的任何斜杠。有关的详细信息。

添加的
\
字符实际上不会插入数据库。如果您在检索时获得这些,是因为启用了类似的功能,并且您将自动添加斜杠

这就是说,您真的应该切换到或,因为
mysql\uu
函数已被弃用。 您的第一个问题是正确的,任何用户输入都应该在插入之前正确转义。PDO和Mysqli允许您使用准备好的语句,并且还提供它们自己的转义函数

关于第二个问题,请尝试以下代码:

if (get_magic_quotes_gpc()) {
    $value = stripslashes($_POST['value']);
}

这将删除PHP自动添加的任何斜杠。更多信息。

首先,不鼓励使用mysql\u real\u escape\u字符串。检查magic_quotes是否打开:

echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");

或者您可以使用
stripslashes

首先,不鼓励使用mysql\u real\u escape\u字符串。检查magic_quotes是否打开:

echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");

或者您可以使用
stripslashes

这不是由该函数引起的,而是由PHP设置引起的。这不是由该函数引起的,而是由PHP设置引起的。谢谢!我会检查一下魔法库特斯。好的,那么mysql_r_e_s是不被鼓励的,是因为使用了mysql_函数还是为什么不被鼓励??使用mysqli_r_e_s可以吗?如果不行,如何从垃圾中清除字符串?最好使用准备好的语句:。出于许多原因,使用PDO对您来说更好。也请查看此链接:谢谢!我会检查一下魔法库特斯。好的,那么mysql_r_e_s是不被鼓励的,是因为使用了mysql_函数还是为什么不被鼓励??使用mysqli_r_e_s可以吗?如果不行,如何从垃圾中清除字符串?最好使用准备好的语句:。出于许多原因,使用PDO对您来说更好。还可以查看以下链接:为什么mysql_函数不受欢迎?我从来没听说过这件事,所以最好能给我一个解释。基本上,它们缺乏对许多功能的支持(例如,准备好的报表和交易)。而且它们不是面向对象的。现在,弃用过程已经开始,我们可以预期这些函数将不再存在于未来的PHP版本中,尽管目前还没有正式版本。所有函数的手册页面都有一个红色的框来解释。嗯,似乎我还需要进行一些重构;-)我同意您的解释,使用mysqli更明智,因此感谢您提供的信息!这至少需要考虑一下。如果您来自mysql函数,那么Mysqli是一个很好的起点。要习惯的差别很小。希望您不必做太多更改:)为什么mysql_函数不受欢迎?我从来没听说过这件事,所以最好能给我一个解释。基本上,它们缺乏对许多功能的支持(例如,准备好的报表和交易)。而且它们不是面向对象的。现在,弃用过程已经开始,我们可以预期这些函数将不再存在于未来的PHP版本中,尽管目前还没有正式版本。所有函数的手册页面都有一个红色的框来解释。嗯,似乎我还需要进行一些重构;-)我同意您的解释,使用mysqli更明智,因此感谢您提供的信息!这至少需要考虑一下。如果您来自mysql_uufunct,那么Mysqli是一个很好的起点