MySQL データベースで次のクエリを実行しています (SELECT AND WHERE を見てください。残りは重要ではありません)。
SELECT distinct fname //more fields...
FROM filedepot_files AS ff
INNER JOIN filedepot_categories AS fc
ON ff.cid = fc.cid
INNER JOIN filedepot_access AS fa
ON fc.cid = fa.catid
WHERE fa.permid=$id AND fname LIKE '%$key%'
ORDER BY DATE
この環境は、Drupal と FileDepot モジュールで実行される PHP スクリプトですが、それが問題になるとは思えません。
これはPHPスクリプトです(重要な部分です):
$id = 1;
$key = $_GET['key'];
$query = .... (see above)
$result = db_query($query);
while($row = db_fetch_array($result)){
//do stuff
echo $row['fname'];
}
db_query()
は、SQL クエリを簡単に実行できる Drupal メソッドであり、配列を返し、db_fetch_array()
結果を解析できます。
現在、DB には fname の次のエントリが含まれています (他にもありますが、これらは単なる例です)。
- ジキアラツィオン 1
- ジキアラツィオーネ 2
- ガイド1
- ガイダ 2
「guida」をキーとしてスクリプトを起動すると、PHP と MySQL の両方で 2 つのエントリが正しく返されます。「Guida」を使用すると、同様に機能します。ただし、「dichiarazione」を使用すると、PHP では使用できませんが、MySQL では使用できません。奇妙なことに、"Dichiarazione" は PHP と MySQL の両方で動作します。
クエリの何が問題になっていますか? 使用してみましLOWER(fname) LIKE '%$key%'
たが、意図したとおりに動作しないようです。
私が見逃している愚かなものがあると確信していますが、それが何であるかを見つけることができないようです...