我目前遇到了一个无法解决的问题,我想我错过了一些东西
这是不起作用的代码(由于某种原因):
$search = "my search keyword";
$findTopics = $db->prepare('SELECT * FROM topics LEFT JOIN forum ON forum.f_id = topics.f_id WHERE topics.keywords LIKE "%:keyword%"');
$findTopics->bindValue(':keyword', $search);
$findTopics->execute();
var_dump($findTopics->fetchAll(PDO::FETCH_ASSOC));
执行上述代码时的结果是空数组array(0) { }
如果将:keyword
更改为my search keyword
并删除$findTopics->bindValue(..)
,则会返回结果。此外,如果您通过控制台直接在mysql中执行查询,查询也可以正常工作。
我在这里错过了什么?
将前两行更改为:
$search = "%my search keyword%";
$findTopics = $db->prepare('SELECT * FROM topics LEFT JOIN forum ON forum.f_id = topics.f_id WHERE topics.keywords LIKE :keyword');
它应该可以正常工作。
PDO将为您添加参数周围的引号。