【发布时间】:2013-04-15 23:12:12
【问题描述】:
为我的实时搜索引擎创建查询时遇到问题。
表的结构是这样的:
street | zipcode | city
col1.: streetname | 12345 | london
col1.: otherstreet | 12345 | london
我的问题如下:
当我搜索12345 london streetname 时,我会得到一个错误的结果,因为这些查询很简单。当我回显查询时,我会得到以下结果:
`zipcode` LIKE '12345%' AND `city` LIKE 'london%' OR `street` LIKE 'london%' AND `city` LIKE 'streetname%' OR `street` LIKE 'streetname%'
我使用以下方法获取结果:
$where = ...
$query = $db->query("SELECT * FROM table WHERE $where");
$result = $query->num_rows;
if ($result !== 0 ){
echo $result;
while ($row = $query->fetch_assoc()) {
echo
$row["zipcode"],
' ',
$row["city"]';
}
}
对此感到好奇的是,当我将输入顺序更改为:
streetname 12345 london
然后我得到:
`city` LIKE 'streetname%' OR `street` LIKE 'streetname%' AND `city` LIKE 'london%' OR `street` LIKE 'london%' AND `zipcode` LIKE '12345%'
似乎最后一个ANDcondition 也有问题。当我将更改该示例中的邮政编码时:
streetname london 12345
没关系,即使邮政编码错误,我也会得到这个结果。
所以如果有人能给我提示来解决这个问题,我真的很感激。
非常感谢。
【问题讨论】:
-
1) 运算符优先级 2) 括号