早上的皮肤!
我遇到一些麻烦让我的查询正常工作。我创建了一个搜索字段,从多个表(发票,客户)中提取行。例如,当我正在搜索发票“2014-003”时,这是唯一的发票,那么我将获得所有客户的列表,然后是相同的发票nr。一路下来..
我的代码:
$results = $db->query("SELECT * FROM invoices, customers
WHERE invoice.customer_id = customers.id AND
(customers.name LIKE '%" . $search . "%') OR
(invoices.invoice_nr LIKE '%" . $search . "%') OR
(invoices.email LIKE '%" . $search . "%') OR
(customers.email LIKE '%" . $search . "%')");
我很擅长英语,所以我觉得最好在下面写一个例子:
我会搜索发票nr。 “2014-003”这是独特的,我得到的是:
Peter - 2014-003
Christian - 2014-003
Adam - 2014-003
Frederick - 2014-003
Peter - 2014-003
它应该返回:
Adam - 2014-003
因为亚当是唯一拥有以下发票nr。
的发票的人我希望你能理解我想做的事情:)
答案 0 :(得分:0)
给它一个旋转:
$results = $db->query("
SELECT
*
FROM
invoices,
customers
WHERE
invoice.customer_id = customers.id AND
((customers.name LIKE '%" . $search . "%') OR
(invoices.invoice_nr LIKE '%" . $search . "%') OR
(invoices.email LIKE '%" . $search . "%') OR
(customers.email LIKE '%" . $search . "%')
)");
您的OR未正确分组,因此AND验证,但稍后放松,因为它在其中一个OR上受到攻击 - 而您的OR实际上是指一组可能的条件(但原始联接需要保持到位)