0

このクエリを正しく取得しようとしています

foreach(explode(" ", trim($words) ) as $word) $where[] = "LIKE '%$word%'";
$wheresql = implode(" OR ", $where);
$q  = "SELECT item_id, name, price, details, img FROM items WHERE (details $wheresql) OR (name $wheresql) OR (description $wheresql)";
$rows = $this->dba->rawSelect($q);

クエリは次のようになります

SELECT item_id, name, price, details, img 
FROM items 
WHERE (details LIKE '%someword%' OR LIKE '%someword%') 
   OR (name LIKE '%someword%' OR LIKE '%someword%') 
   OR (description LIKE '%someword%' OR LIKE '%someword%')

すべての列を指定する必要があるのか​​ 、LIKEそれとも何か他のことをする必要があるのか​​ わかりません

ありがとう、リチャード

4

2 に答える 2

1
foreach(explode(" ", trim($words) ) as $word) $where[] = "LIKE '%$word%'";
$q = "SELECT item_id, name, price, details, img FROM items WHERE (details ".implode(" OR  details ",$where).") OR (name ".implode(" OR names ",$where).") OR (description ".implode(" OR description ",$where).")";
$rows = $this->dba->rawSelect($q);
于 2012-08-28T06:56:35.943 に答える
1

LIKEごとに列を指定する必要があると思います。ところで、SQL を実行してみませんか? それはあなたにすべてを教えてくれます。

于 2012-08-28T05:49:47.430 に答える