MySQL Manual开始:

Because MySQL uses C escape syntax in strings (for example, “\n” to represent a newline character), you must double any “\” that you use in LIKE strings. For example, to search for “\n”, specify it as “\\n”. To search for “\”, specify it as “\\\\”; this is because the backslashes are stripped once by the parser and again when the pattern match is made, leaving a single backslash to be matched against.

因此,您应该分两步为LIKE运算符转义字符串.

在PHP中它可以是这样的:

// Your search string, for example, from POST field

$string = $_POST['column'];

// First step - LIKE escaping

$string = str_replace(array('\\', '_', '%'), array('\\\\', '\\_', '\\%'), $string);

// Second step - literal escaping

$string = mysql_real_escape_string($string);

// Result query

mysql_query("SELECT * FROM `table` WHERE `column` LIKE '%".$string."%'");

更新:

MySQL extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.

使用MySQLi

// Connect to database

$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// Your search string, for example, from POST field

$string = $_POST['column'];

// First step - LIKE escaping

$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Second step - literal escaping

$string = $mysqli->real_escape_string($string);

// Result query

$mysqli->query("SELECT * FROM `table` WHERE `column` LIKE '%{$string}%'");

使用PDO

// Connect to database

$conn = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

// Your search string, for example, from POST field

$string = $_POST['column'];

// First step - LIKE escaping

$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Second step - literal escaping

$string = $conn->quote($string);

// Result query

$conn->query("SELECT * FROM `table` WHERE `column` LIKE '%{$string}%'");

或者您可以使用PDO预处理语句,而不是第二步(文字转义):

// Connect to database

$conn = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

// Your search string, for example, from POST field

$string = $_POST['column'];

// First step - LIKE escaping

$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Prepare a statement for execution

$statement = $conn->prepare("SELECT * FROM `table` WHERE `column` LIKE ?");

// Execute a prepared statement

$statement->execute(["%{$string}%"]);

mysql 查询的转义字符_mysql – 如何在LIKE查询中转义字符?相关推荐

  1. MySQL查询语种关键字_Mysql语言之数据查询

    一.基础查询 #进阶1:基础查询 /* 语法: select 查询列表 from 表名; 特点: 1. 查询列表可以使:表中的字段,常量值,表达式,函数 2. 查询的结果是一个虚拟的表格 */ # 打 ...

  2. mysql范围查找性能_MYSQL(四)查询性能优化

    优化数据访问 1.是否向数据库请求了不需要的数据 解决方式: A. 查询后加limit B. Select后写需要的列而不是* 2. 是否扫描了额外的数据 数据库的访问方式速度由慢到快:全表扫描,索引 ...

  3. db2有MySQL那样的时间戳_MySQL 按照日期格式查询带有时间戳数据

    按照日期格式查询带有时间戳数据一般在MSQL数据库中的时间都是以时间戳的格式来存储时间的,但是对于我们来说,时间戳格式具体表示的是什么时间,我们很难一眼看出来,所以当我们要具体查询某一个时间或时间段的 ...

  4. mysql数据库子查询的使用_MySQL数据库使用子查询方式更新数据优化及思考

    [环境介绍] 云数据库MySQL 5.7 [背景描述] 业务需要:需要对16370077的表数据进行更新部分数据操作 UPDATE P_MOXXXX_REXXXX SET FISAVAILABLE = ...

  5. mysql多表查询分页面_mysql多表联合查询分点经验给大家

    你的位置: 问答吧 -> MySQL -> 问题详情 mysql多表联合查询分点经验给大家 我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比较痛苦的是经常碰见mysql多表联 ...

  6. mysql怎么添加查询时间限制_mysql如何限制sql查询时间,

    mysql如何限制sql查询时间MySQL如何限制结构化查询语言查询时间,关系型数据库限制结构化查询语言查询时间的方法:1.查询今天,代码为[选择*表名where to_days(时间字段名)=to ...

  7. mysql查询并更新_MySQL如何实现更新查询?

    MySQL UPDATE查询用于更新MySQL数据库中表中的现有记录.它可以用于同时更新一个或多个字段.并且可用于使用WHERE子句指定任何条件.(相关推荐:<MySQL教程>) UPDA ...

  8. mysql 查询树形结构_MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  9. mysql 子查询 博客_mysql——多表——子查询——示例

    子查询: 子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以作为外来层查询语句提供查询条件. 因此在特定条件下,一个查询语句的条件,需要另外一个查询语句来获取. 前期准备表: ...

最新文章

  1. 2、安装Lync Server 2013
  2. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
  3. lammps linux运行命令,[转载]linux下 lammps的安装以及计算初步使用
  4. java putall实现,Java EnumMap putAll()
  5. [iPhone开发]UIWebview 嵌入 UITableview
  6. 文档浏览网站 Docs4dev,内含Spring、SpringBoot、Spring Data等中英文文档
  7. mysql1045错误解读_谈谈MYSQL ERROR 1045 错误的解决办法!
  8. php secket5,《Thinkphp5使用Socket服务》 入门篇
  9. QList、QVector、QMap容器类
  10. The Linux commands you need!
  11. 在linux缓存里写数据,缓存策略
  12. 目标检测的图像特征提取之(一)HOG特征
  13. php mysql新闻表模板_新闻列表之创建数据库
  14. matlab表示大于等于,matlab不等于怎么表示
  15. 关于网络传输单位的换算
  16. 三维开发及三维地形和地理信息系统的集成探索
  17. MATLAB注意事项
  18. ibm邮箱连接不到服务器,IBM i 安全邮件配置和常见故障排除方法
  19. 计算机课学生电脑怎么打开任务管理器,Win7系统电脑打开任务管理器的几种方法-电脑自学网...
  20. MATLAB利用仿射变换实现图像的缩放,旋转,剪切,平移操作

热门文章

  1. springMVC源码分析
  2. python函数与函数式编程
  3. diy一下devise的验证
  4. 我的MVC之旅(3)--------MVC Music Store 第三篇 Views and ViewModels [翻译]
  5. 基因组组装程序linux,基因组组装软件SOAPdenovo安装使用
  6. java加密文件夹_使用java.util.zip压缩文件夹,支持加密,增加描述
  7. Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式
  8. php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
  9. java swftools linux_swftools linux下安装
  10. 延迟队列Delay Queue