我有一个搜索字段,并且使用该单个文本框我希望用户能够按名称查找图库和图像。我遇到的问题是我似乎无法在查询中获得任何结果,即使语法很好而且没有错误。
以下是该场景:我的群组名称为“Liten gruppe!”,搜索字符串为“liten”。对于非区分大小写的搜索,搜索字符串和结果字符串都会切换为小写。
语法中的某些东西必须做一些我不期望的事情。
SELECT `id`
FROM gallery_groups
WHERE `name` LIKE LOWER('%$searchstring%') OR
`date_created` LIKE LOWER('%$searchstring%');
感谢您的帮助
SELECT `id`
FROM gallery_groups
WHERE LOWER(`name`) LIKE '%$searchstring%' OR
LOWER(`date_created`) LIKE '%$searchstring%';
编辑:好的,事实证明查询确实返回了1个结果。我被结果的转储输出所迷惑:
object(mysqli_result)[3]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null
如果结果中的所有字段都为null,除了运行fetch_object()之外,我怎么可能知道是否有任何结果?
答案 0 :(得分:1)
您可以在没有LOWER
的情况下在MYSQL中发出不区分大小写的搜索:
WHERE `name` COLLATE UTF8_GENERAL_CI LIKE '%$searchstring%' OR
`date_created` COLLATE UTF8_GENERAL_CI LIKE '%$searchstring%';
用于调试的AS:尝试打印SQL查询,因为它们被传递到数据库以查看是否真的使用了预期的搜索字符串。
答案 1 :(得分:0)
我假设您使用msql_query
来获取结果对象,在这种情况下,您可以使用mysql_num_rows
来获取结果中的行数。
答案 2 :(得分:0)
不确定这是否有助于您查明查询是否返回任何行。 但这就是我这样做的方式:
$ strSQL =“SELECT id
”;
$ strSQL。=“FROM gallery_groups”;
$ strSQL。=“WHERE LOWER(name
)LIKE'%$ searchstring%'或”;
$ strSQL。=“LOWER(date_created
)LIKE'%$ searchstring%'”;
$ rec = mysql_query($ strSQL,$ oConn);
if(mysql_num_rows($ rec)> 0){ $ strName = mysql_result($ rec,0,“name”); $ strDateCreated = mysql_result($ rec,0,“date_created”); }