我正在为我的网站制作一个包含多个词典的新搜索脚本。首先让我告诉你一段代码,然后解释....
$sql = mysql_query("SELECT * FROM $tbl_name WHERE $field = '%$trimmed%' ORDER BY $field ".$sort." LIMIT ".$limits.", $max")or die(mysql_error());
$count = mysql_result(mysql_query("SELECT COUNT($field) FROM $tbl_name WHERE $field = '%$trimmed%'"),0);
if ($count < 1){
$sql = mysql_query("SELECT * FROM $tbl_name WHERE $field LIKE '%$trimmed%' ORDER BY $field ".$sort." LIMIT ".$limits.", $max")or die(mysql_error());
$count = mysql_result(mysql_query("SELECT COUNT($field) FROM $tbl_name WHERE $field LIKE '%$trimmed%'"),0);
}
好的,理论上,第一个查询应该选择精确的结果并显示它们而不显示“LIKE”结果。但是,它没有这样做。它只是总是显示LIKE结果。
当我删除所有内容并保留第一个查询时 - 不会返回任何结果 - 即使它们在数据库中。
例如,在“if($ count&lt; 1){”包含之后的所有内容中,我可以搜索“SHE”或“I”并获得结果 - 但是它包含“非正式”,“单数”等字样但是当我删除它时,我可以搜索“SHE”和“I”并且根本没有结果,即使它们在数据库中。
非常感谢任何帮助。
答案 0 :(得分:2)
删除第一个查询中“$ trimmed”周围的'%'字符。
看看是否能解决问题。