このクエリを実行する最良の方法があるかどうかは疑問でした。PHP MySQLクエリの最適化
$searchTerm = explode(' ', $search);
$wall_sql = "SELECT filename, category, name, downloads FROM wallpapers WHERE (pending='0' AND mediaType='0') AND (";
for($i=0;$i<count($searchTerm);$i++){
if($i != 0){
$wall_sql .= " OR ";
}
$wall_sql .= " (category LIKE '%".$searchTerm[$i]."%') OR (filename LIKE '%".$searchTerm[$i]."%') OR (tags LIKE '%".$searchTerm[$i]."%') OR (name LIKE '%".$searchTerm[$i]."%') ";
}
$wall_sql .= ") ORDER BY ordernum DESC ";
このスクリプトは、$ searchという検索語をPHPのexplode関数を使って配列に分割します。その配列をループしてクエリを構築します。これが私がそれをすると考えることができる唯一の方法です、私はそれがそれを行うための最善の方法であると確信していません。また、もしそうなら、どんなインデックスもこのクエリで動作しますか?
FYI:
は、読みやすくするためのビットコードをリファクタリングでしたあなたのコードは、SQLインジェクションの可能性を有しています。 –