早安,加油!
我在让查询正常工作时遇到一些问题。我创建了一个搜索字段,它从多个表(发票、客户)中提取行。例如,当我搜索发票“2014-003”(这是唯一具有该编号的发票)时,我会得到所有客户的列表,然后是相同的发票编号。一路下来..
我的代码:
$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 . "%')");
我的英语很糟糕,所以我认为我最好在下面写一个例子:
我将搜索发票编号。 “2014-003”是独一无二的,我得到的是这样的:
Peter - 2014-003
Christian - 2014-003
Adam - 2014-003
Frederick - 2014-003
Peter - 2014-003
它应该返回:
Adam - 2014-003
因为 Adam 是唯一拥有以下发票编号的发票的人。
我希望你能明白我想做什么:)
最佳答案
尝试一下:
$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 实际上指的是一组可能的条件(但原始连接需要保留就位)
关于PHP MySQL While 循环 多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21724205/