微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDO对反斜杠INSERT和SELECT的不同处理?

如何解决PDO对反斜杠INSERT和SELECT的不同处理?

我要存储一个包含原义反斜杠的引退字符串:

$value = "John\\Doe";
$stm = $db->prepare('INSERT INTO mytable (mycol) VALUES(:v);');
$stm->execute(['v' => $value]);

但是在使用通配查询数据时:

$stm2 = $db->prepare("SELECT * FROM mytable WHERE mycol LIKE CONCAT('%',:q,'%');");

$query="n\\Do";
$stm2->execute(['q' => $query]);
print_r($stm2->fetchAll()); //Empty response

除非事先手动转义反斜杠,否则我将得到一个空响应:

$query="n\\\\Do";
$stm2->execute(['q' => $query]);
print_r($stm2->fetchAll()); //Gives the results

任何人都可以解释这种行为,并告诉我如何使存储和获取行为相同吗? (使用PHP 7.3.12和MysqL Ver 15.1 distrib 10.4.10-MariaDB)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。