PHP MySQL While 循环 多个表

标签 php mysql sql mysqli while-loop

早安,加油!

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

相关文章:

php - 如何在php中解压zip文件

mysql - 从每 5 行中选择最高价格

sql - 查找列上有差异的相似行

sql - 与sqlite中子查询的结果比较

php - pdo 代码中 undefined variable

php - 使用phpmyadmin连接远程MYSQL很慢

php - mysql查询新读者可用的书籍

mysql - 通过检查是否为空来显示不同的文本

javascript - jQuery 弹出按钮 (php)

mysql - 获取所有行的总和