gpt4 book ai didi

php - 我的 SQL 搜索查询无法区分列属性?

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

我的数据库有两个单独的查询,它们返回两种不同类型数据的搜索结果,这些数据单独显示在搜索结果页面上。

显示的两个组是“联系人”和“客户”。客户是数据库中的联系人,其联系号码为零!

这是一个正常查询,在查询中不使用任何 LIKE 语句。

$contacts = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id = 0 GROUP BY first_name, second_name, company_name, email, quote_name ");
$customers = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id != 0 GROUP BY first_name, second_name, company_name, email, quote_name ");

它工作正常,并将结果显示到正确的类别中。

像这样

enter image description here

<小时/>

但是我的新查询是这样的

$contacts = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id =0 AND first_name LIKE '%$search%' OR second_name LIKE '%$search%' OR company_name LIKE '%$search%' OR email LIKE '%$search%' OR quote_name LIKE '%$search%' AND contact.id = contact_quote.cid GROUP BY first_name, second_name, company_name, email, quote_name");
$customers = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id !=0 AND first_name LIKE '%$search%' OR second_name LIKE '%$search%' OR company_name LIKE '%$search%' OR email LIKE '%$search%' OR quote_name LIKE '%$search%' AND contact.id = contact_quote.cid GROUP BY first_name, second_name, company_name, email, quote_name");

显示两个列表中的所有结果,即使他们不是客户

屏幕截图:

enter image description here

我猜测新查询中存在问题,如果列“customer_id”不等于零并且显示所有内容,则无法正确比较?

总而言之,我想这样做:

  • 与搜索字符串比较
  • 如果有任何联系人与搜索字符串匹配,请将其添加到联系人查询结果中
  • 如果有任何客户与搜索字符串匹配,请将其添加到客户查询结果中。

谢谢

最佳答案

您的 LIKE 语句需要用括号括起来。它会进入您的 WHERE 子句,检查 customer_id=0 AND first_name LIKE '%$search%',然后检查 OR secondary_name LIKE '%$ search',如果 customer_id=0 也没关系,因为它现在只检查一种情况。通过在其周围添加括号,它将检查 customer_id=0,然后检查所有的“喜欢”。

$contacts = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id =0 AND (first_name LIKE '%$search%' OR second_name LIKE '%$search%' OR company_name LIKE '%$search%' OR email LIKE '%$search%' OR quote_name LIKE '%$search%') AND contact.id = contact_quote.cid GROUP BY first_name, second_name, company_name, email, quote_name");
$customers = $db->query("SELECT DISTINCT contact.id, first_name, second_name, company_name, email FROM contact INNER JOIN contact_quote WHERE customer_id !=0 AND (first_name LIKE '%$search%' OR second_name LIKE '%$search%' OR company_name LIKE '%$search%' OR email LIKE '%$search%' OR quote_name LIKE '%$search%') AND contact.id = contact_quote.cid GROUP BY first_name, second_name, company_name, email, quote_name");

关于php - 我的 SQL 搜索查询无法区分列属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298042/

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