0

私は現在、理解できない問題を抱えており、何かが欠けていると思います。
これは動作しないコードです (何らかの理由で):

$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) { }です。
に変更:keywordmy search keywordて削除すると、$findTopics->bindValue(..)結果が返されます。また、コンソールを介してmysqlで直接実行すると、クエリは正常に機能します。

ここで何が欠けていますか?

4

1 に答える 1

4

最初の 2 行を次のように変更します。

$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 は、パラメーターの周りに引用符を追加します。

于 2012-08-26T17:31:08.420 に答える