首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Real Escape String PHP函数将"\“添加到我的字段条目

问Mysql Real Escape String PHP函数将"\“添加到我的字段条目
EN

Stack Overflow用户
提问于 2010-02-18 04:23:08
回答 3查看 12.7K关注 0票数 5

我正在使用PHP向我的MySQL数据库提交一个表单。

我通过mysql_real_escape_string($content)函数发送表单数据。

当条目出现在我的数据库中(签入phpMyAdmin)时,我所有的双引号和单引号都会转义。

我很确定这是一个PHP配置问题?

所以:

代码语言:javascript
复制
$content = 'Hi, my name is Jascha and my "favorite" thing to do is sleep';
mysql_real_escape_string($content);
$query = 'INSERT INTO DB...'

在我的数据库里是这样的:

嗨,我叫Jascha,我最喜欢做的事就是睡觉

我该告诉谁该做什么?(我无法访问php.ini)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-18 04:35:31

在检索请求数据时,需要考虑魔术引号。如果get_magic_quotes_gpc()为true,则需要对输入运行stripslashes()。最好的方法是为此编写一个函数。类似于:

代码语言:javascript
复制
function get_string($array, $index, $default = null) {
    if (isset($array[$index]) && strlen($value = trim($array[$index])) > 0) {
        return get_magic_quotes_gpc() ? stripslashes($value) : $value;
    } else {
        return $default;
    }
}

您可以将..which用作

代码语言:javascript
复制
$input = get_string($_POST, 'input');

..instead of

代码语言:javascript
复制
$input = $_POST['input'];

对get_number()、get_boolean()、get_array()等琐碎的东西做同样的事情。

票数 5
EN

Stack Overflow用户

发布于 2010-02-18 04:30:55

如果您是从表单(而不是PHP代码中的“原样”)获取$content数据,可能是因为有魔术引号(请参阅)。

基本上:

当magic_quotes为on时,所有' (单引号)、" (双引号)、\ (反斜杠)和NUL都会自动用反斜杠转义

如果启用了魔术引号(例如,您可以在的输出中检查这一点),您将得到那种“双重转义”:

这些字符将通过魔术引号和

  • 进行一次转义,然后由
  • 进行第二次转义

在这种情况下,好的解决方案不是停止使用mysql_real_escape_string,而是在您的配置中禁用magic_quotes_gpc ...

..。但是,由于您无法访问它,因此在开始使用它之前,您实际上必须“还原”魔术引号的效果,在获得的输入上调用$_GET和$_POST作为stripslashes。

注意:这是mysql_real_escape_string (报价)手册页上提供的建议:

注意:如果启用了magic_quotes_gpc,请先对数据应用stripslashes()。对已经转义的数据使用此函数将对数据进行两次转义。

票数 6
EN

Stack Overflow用户

发布于 2010-07-16 13:43:43

我知道现在有点晚了,但作为php的新手,我需要一些非常简单的东西。所以我使用下面的代码来修复magic_quotes_gpc中OP描述的问题。我有一台运行PHP5.2.8的服务器,一台运行5.3的服务器

我的web应用程序正在使用datatables.net显示信息。当数据在数据库中使用转义的特殊字符保存时,我开始收到JSON错误。

我的开发机器使用5.3,但在php 5.2.8中,我需要使用stripslashes函数来将值保存到我的数据库中。

代码语言:javascript
复制
$description = mysql_real_escape_string($description);
// hack for php 5.2.8 //
if (get_magic_quotes_gpc()) {
     $description = stripslashes($description); 
     //echo "description: $description";
    }

我意识到这基本上和上面的答案是一样的,但对我来说这似乎更符合我的风格。希望这对其他与我同病相助的人有所帮助……

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2284099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档