小编Jay*_*nia的帖子

使用LIKE子句和NO_BACKSLASH_ESCAPES模式转义mysqli prepare()中的%符号

问题:

注意: NO_BACKSLASH_ESCAPES模式已启用.

我正在使用mysqli预处理语句来查询数据库.目标代码如下:

$conn = new mysqli('localhost', 'root', 'mypass', 'mydb');
$stmt = $conn->prepare('select * from `table` where `data` like ?;');
Run Code Online (Sandbox Code Playgroud)

现在,让我说我手动(来自mysql客户端,而不是来自php)插入3个具有文字值的记录JDxDD,JD_DD并且JD\DD:

INSERT INTO `table` SET `data` = 'JDxDD';
INSERT INTO `table` SET `data` = 'JD_DD';
INSERT INTO `table` SET `data` = 'JD\DD';
Run Code Online (Sandbox Code Playgroud)

现在,考虑一下:

$stmt = $conn -> prepare('SELECT * from `table1` where `data` like ?;');
$key = 'JD_DD';
$stmt -> bind_param('s', $key);
$stmt-> execute();
Run Code Online (Sandbox Code Playgroud)

这将返回所有3行,如预期的那样.现在,我想只选择一个有价值的JD_DD(即排除JDxDDJD\DD).所以,正如 …

php mysqli prepared-statement mariadb

5
推荐指数
1
解决办法
118
查看次数

标签 统计

mariadb ×1

mysqli ×1

php ×1

prepared-statement ×1