gpt4 book ai didi

php - Mysql查询条件不起作用

转载 作者:行者123 更新时间:2023-11-29 13:54:56 25 4
gpt4 key购买 nike

我在为实时搜索引擎创建查询时遇到问题。

表的结构如下:

           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"]';

}

}

令人好奇的是,当我将输入顺序更改为:

时,我收到了正确的结果:

街道名称 12345 伦敦

然后我得到:

`city` LIKE 'streetname%' OR `street` LIKE 'streetname%' AND `city` LIKE 'london%' OR `street` LIKE 'london%' AND `zipcode` LIKE '12345%'

最后一个AND条件似乎也有问题。当我更改该示例中的邮政编码时:

街道名称 london 12345

没关系,即使邮政编码错误,我也会得到这个结果。

因此,如果有人能给我解决这个问题的提示,我真的很感激。

非常感谢。

最佳答案

AND 的绑定(bind)优先级比 OR 更严格,因此您的第一个表达式将被视为:

(`zipcode` LIKE '12345%' AND `city` LIKE 'london%')
OR (`street` LIKE 'london%' AND `city` LIKE 'streetname%')
OR (`street` LIKE 'streetname%')

第二个解析为:

(`city` LIKE 'streetname%')
OR (`Strasse` LIKE 'streetname%' AND `city` LIKE 'london%')
OR (`street` LIKE 'london%' AND `zipcode` LIKE '12345%')

您需要使用显式括号来指定您实际希望组合条件的方式。

关于php - Mysql查询条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com