使用PHP mysqli在MySQL中搜索表时,包含正斜杠的字符串返回空结果

使用PHP mysqli在MySQL中搜索表时,包含正斜杠的字符串返回空结果,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试运行以下查询: SELECT * FROM `mytable` WHERE `mycolumn`='stringa /stringb' 如果直接通过PHPMyAdmin或在PHP中运行,则此查询可以工作,如下所示: $query = "SELECT * FROM `eztrack` WHERE `visible`='1' AND `OrderHed_PONum`='stringa /stringb'"; $DB->query($query); // $DB is a mys

我正在尝试运行以下查询:

SELECT * FROM `mytable` WHERE `mycolumn`='stringa  /stringb'
如果直接通过PHPMyAdmin或在PHP中运行,则此查询可以工作,如下所示:

$query = "SELECT * FROM `eztrack` WHERE `visible`='1' AND `OrderHed_PONum`='stringa  /stringb'";
$DB->query($query); // $DB is a mysqli object
但是,当从$\u GET或$\u POST获取搜索关键字时,它会返回一个空结果:

$query = "SELECT * FROM `eztrack` WHERE `visible`='1' AND `OrderHed_PONum`='" . $DB->real_escape_string($_POST['q']) . "'";
$result = $DB->query($query); // $result->num_rows is 0
是否需要避开前斜杠?如果是,怎么做?当搜索关键字直接粘贴到文件中时,为什么会起作用?任何帮助都将不胜感激

--编辑:已解决--


问题不在于PHP或mysqli。这与从Chrome复制数据有关。请参阅下面我的评论。

如果要将“外部”文本填充到查询中,则必须转义所有sql元字符,除非希望将其视为元字符。从技术上讲,你完全错了。你不应该自己逃避事情。您应该使用准备好的语句和占位符。@MarcB谢谢,我已经用准备好的语句尝试过了,但得到了相同的结果。刚刚发现从Chrome复制搜索查询有问题:/。。。我从Google Chrome复制搜索关键词进行测试。然而,我相信Chrome没有正确地复制空格。我试着输入搜索关键词并从Firefox中复制,效果很好。我目前使用的是Chrome版本39.0.2171.95 m。具体来说,当我遇到这个问题时,我正在Chrome中从PHPMyAdmin复制数据。另外,我是否将此作为答案(这是我的第一篇关于SO的帖子)?您可以回答自己的问题。那完全可以接受。只是不要经常这样做,否则会被视为试图提高你的声誉。