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 (将#修改为@)