只给我一个结果?

时间:2017-07-24 18:59:04

标签: php mysql

我的数据库中有两个表:

customer
product

客户表:

customerID
sl_no(pk)
name
email
phone

产品表:

product_id(pk)
sl_no(fk)
product
price

当我运行此查询时,它只显示一个结果:

$sql = (" SELECT * FROM customer INNER JOIN product WHERE customer. sl_no LIKE '%$search%' OR product. sl_no LIKE '%$search%'");

2 个答案:

答案 0 :(得分:1)

您的SQL查询在某些时候会返回一个含糊不清的错误或带有名称的列,找不到产品。我在SQL查询中添加了别名。如果你不明白。你可以从这里阅读。 https://www.w3schools.com/sql/sql_alias.asp

如果你

  

还尝试使用 mysqli ,因为从PHP开始,不推荐使用 mysql   5.5.0

  $servername = "yourhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = (" SELECT customer.name AS name, customer.email AS email, customer.phone AS phone, product.product AS product_name, product.price AS price FROM customer,  product WHERE customer.sl_no = product.sl_no AND customer. sl_no LIKE '%$search%' OR product. sl_no LIKE '%$search%' "); 

    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "<strong>CUSTOMER</strong>";
            echo "Customer Name: " . $row["name"]."<br>";
            echo "Customer email: " . $row["email"]."<br>";
            echo "Customer phone: " . $row["phone"]."<br>";
            echo "----";
            echo "<strong>PRODUCT</strong>";
            echo "Product Name: " . $row["product_name"]."<br>";
            echo "Product Price: " . $row["price"]."<br>";
            echo "-----";
            echo "----";
        }
    } else {
        echo "0 results";
    }
$conn->close();
  

不要忘记首先通过您的数据库在数据库中测试或运行查询    UI / phpmyadmin CLI ,了解您应该期待的结果。

希望这有帮助。

答案 1 :(得分:0)

您可能有几个问题。我们无法看到结果的Php迭代......这里有基本选择的一些问题...

  1. 缺少子句(或将内部联接更改为交叉联接),因此您的意思很明确。
  2. 条款中的OR或者如果它是一个内部连接,则给出了PK / FK字段的性质。
  3. 使用%var%进行搜索似乎是不好的形式。你知道具体的价值吗?如果是这样,请使用它们而不是%var%,因为此方法无法使用索引。
  4. customer. sl_no有空间的地方......这不会有效。
  5. $sql = ("SELECT * 
             FROM customer C 
             INNER JOIN product P 
               ON C.sl_no = P.SL_NO 
             WHERE C.sl_no = '$search'");
    

    如果你的意思真的像那样把类似物和%回归,但这似乎是不好的形式。而且你不需要。在php之前和之后。我不是那里的大开发者,所以也许我在考虑其他事情。