我正在 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()
是一个 Drupal 方法,允许轻松执行 SQL 查询并返回一个数组,db_fetch_array()
允许解析结果。
现在,DB 包含以下 fname 条目(还有更多,这些只是示例):
- 双歧杆菌 1
- 双歧杆菌 2
- 桂达 1
- 桂达 2
如果我以“guida”作为键启动脚本,它会正确返回 PHP 和 MySQL 的两个条目。如果我使用“Guida”它也可以。但是,如果我使用“dichiarazione”,它不会与 PHP 一起使用,而与 MySQL 一起使用。奇怪的是“Dichiarazione”同时适用于 PHP 和 MySQL。
查询有什么问题?我尝试使用LOWER(fname) LIKE '%$key%'
,但它似乎没有按预期工作。
我确信我错过了一些愚蠢的东西,但我似乎无法找到那是什么......