【问题标题】:How to check Apostrophe with where clause using mysql如何使用 mysql 使用 where 子句检查撇号
【发布时间】:2012-04-01 22:17:41
【问题描述】:

在 MySQL 中,撇号 (') 如何与 WHERE 子句一起使用?

我已经使用mysql_real_escape_string 清理输入。

这是我的mySQL查询和数据库的截图

SELECT * FROM players WHERE `name` = 'Amar'e Stoudemire'

执行此查询会产生以下错误:

知道为什么吗?

【问题讨论】:

  • 您是在尝试防止 SQL 注入攻击,还是只想知道如何格式化此查询以使其正常运行?

标签: php mysql sql mysqli


【解决方案1】:

我找到了juergen d 的答案thanx,他帮我解决了这个问题

<?php 
$name = "Amar'e Stoudemire";
?>

这是带有撇号的字符串 如果你想在 mysql Query 中使用 where 子句检查这个字符串,那么这里是解决方案

<?php 
$name = addslashes(addslashes($name));
/*Amar\\\'e Stoudemire*/
?> 

SELECT * FROM players WHERE `name` = "'.$name.'"

【讨论】:

  • 强制 mysql_real_escape_string 用于插入
【解决方案2】:
SELECT * FROM players WHERE `name` = 'Amar\\''e Stoudemire'

如果您的单元格内容是\',那么您必须转义这两个字符:

\ --> \\
' --> ''

【讨论】:

  • 当我尝试这个查询时出现空响应
  • 我通过这个查询找到了我的数据,但我的问题是如何使用 php 在字符串中添加这些斜杠
  • @Samad:您可以在执行查询之前使用str_replace 将所有'\' 和' 加倍。
  • @Samad:实际上你正在使用mysql_real_escape_string,这应该可以。我想你真正的问题是你的单元格的内容不是...'...,而是...\'...。不知何故,一个逃脱的字符串进入了你的牢房。也许你可以解决这个问题。
  • juergen 看看我的回答如下
【解决方案3】:

单引号可以在 MySQL 中自行转义 - 如下所示:

SELECT * FROM players WHERE `name` = 'Amar\''e Stoudemire'

【讨论】:

  • 当我尝试这个查询时出现空响应
  • @Samad:现在试试 - 表中的实际值是Amar\'e Stoudemire,而不是Amar'e Stoudemire
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2016-04-05
  • 2019-10-04
  • 1970-01-01
  • 2021-03-07
  • 2015-02-18
  • 1970-01-01
相关资源
最近更新 更多