当前位置: 首页 > 面试题库 >

mysql_real_escape_string和单引号

胡利
2023-03-14
问题内容

我很沮丧 我希望能够在数据库名称中插入单引号-例如O’Connor。

因此,当插入数据库时​​,我这样做:

 $lname = mysql_real_escape_string($_POST['lname']);

然后,我将$ lname插入数据库。

在数据库中时,它显示为O 'Connor。

因此,如果要在Web应用程序中记住该姓氏,则必须使用:

 $lname = stripslashes($r["lname"]);

这一切似乎都很好。但是,我有一个搜索功能,可以搜索姓氏并显示结果。当我搜索时,我必须搜索O 'Connor以获得任何结果。

您会发现,在搜索之后,文本框会自动存储刚搜索(使用会话)的值。所以我的代码是这样的:

 $search = mysql_real_escape_string($_GET['search']);
 $_SESSION['search'] = $search;

就像我之前说的,当我搜索时,我必须使用“ O 'Connor”,然后在搜索后,文本框中的值将变为“ O \\\'Connor”

试图弄清楚这一点一直令人沮丧。有人知道我在做什么错吗?谢谢!

编辑:

这是我的php5.ini文件,关于魔术引号:

 ; Magic quotes
 ;

 ; Magic quotes for incoming GET/POST/Cookie data.
 magic_quotes_gpc = On

 ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
 magic_quotes_runtime = Off

 ; Use Sybase-style magic quotes (escape ' with '' instead of \').
 magic_quotes_sybase = Off

但是,我的网站托管在GoDaddy上,并且我没有编辑文件的权限:(


问题答案:

听起来您的PHP配置中启用了“ 魔术引号”。

要检查它是否真正启用:

echo get_magic_quotes_gpc();

要禁用,请编辑您的php.ini文件:

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

或将此行添加到您的.htaccess:

php_flag magic_quotes_gpc Off


 类似资料:
  • 问题内容: 这实际上有什么区别? 这工作正常: 但以下操作无效: 这是为什么? 问题答案: 那是因为双引号被认为是标准的,而单引号却没有。这并不是真正针对JQuery,而是关于JSON标准。因此,无论使用JS工具包,您都应该期待相同的行为。 值可以是带双引号的字符串,也可以是数字,也可以是true或false或null,或者是对象或数组。这些结构可以嵌套。

  • 问题内容: 所以这是我们所有人都应该知道的事情,当我第一次看到它时就在我脑海中浮现。 我知道该版本从5.3开始弃用,但的实际区别是什么。 我以为那是完全一样的,除了需要为mysql资源提供第二个参数。 因此,我当时很好地认为,字符串的处理方式一定有所不同,因为不需要2个函数。 因此,我当时认为区别完全在于语言环境和字符编码。? 谁能为我解决这个问题? 问题答案: 不同之处在于,仅将字符串视为原始字

  • 问题内容: 我正在使用PHP版本5.3并尝试在我的代码中使用,但是出现错误: 我仍然可以连接到数据库。为什么不可用? 我正在使用PHP版本5.3。 问题答案: 更新 中提到的评论,一直以来5.5弃用: 自PHP 5.5起不推荐使用mysql扩展。应该改用mysqli或PDO扩展名。否决已在mysql_deprecation中确定,可以在此找到对该决定背后原因的讨论。 并 在PHP 7中删除 。 是

  • 问题内容: 我在这里看到一些人指出,使用串联查询不会(完全)保护您免受SQL注入攻击。 但是,我还没有看到一个输入示例,该示例说明了无法保护您免受攻击的攻击。大多数示例都忘记了仅限于一个查询并且使用不正确。 我能想到的唯一示例如下: 这不会保护您免受以下输入的影响: 我认为这是不正确的用法,而不是缺点,它是为字符串而非数字值设计的。您应该转换为数字类型,或者如果要在消毒时将输入视为字符串,则应在查

  • 问题内容: 我有一个正在编写的脚本,用于将某些字段移至新的数据库,例如 但是如您所见,由于单引号和双引号,查询每次都会中断,是否有解决此问题的方法,例如herdok或类似的东西 问题答案: 为此而制作的。 PHP:mysql_real_escape_string

  • 我正在使用opencsv读取csv文件。有时csv文件中包含单引号或双引号。如何读取它们而不更改csv文件本身中的数据。 现在,如果我用两个单引号替换一个单引号,它工作正常,与双引号相同,用两个替换单个引号,它的工作原理。但我不想碰源文件。 要访问的代码如下: 这样做的结果是跳过下一行(也包含双引号),插入所有奇数行,跳过偶数行 提前谢谢