PHP MySQL While循环多表

时间:2014-02-12 09:49:37

标签: php mysql sql mysqli while-loop

早上的皮肤!

我遇到一些麻烦让我的查询正常工作。我创建了一个搜索字段,从多个表(发票,客户)中提取行。例如,当我正在搜索发票“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。

的发票的人

我希望你能理解我想做的事情:)

1 个答案:

答案 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实际上是指一组可能的条件(但原始联接需要保持到位)