注意: 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(即排除JDxDD和JD\DD).所以,正如 …