Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只给我看一个结果?_Php_Mysql - Fatal编程技术网

Php 只给我看一个结果?

Php 只给我看一个结果?,php,mysql,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

我的数据库中有两个表,它们是:

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%'");

你可能有几个问题。因为我们看不到Php迭代的结果。。。。下面是一些与基本选择有关的问题

  • 缺少on子句(或将内部连接更改为交叉连接),因此您的意思很清楚
  • 如果是给定字段PK/FK性质的内部联接,则子句或中的OR没有意义
  • 使用类似于%var%的搜索似乎是一种糟糕的形式。你知道确切的数值吗?如果是,请使用它们而不是%var%,因为此方法无法使用索引
  • 您的where
    客户。sl_no
    有一个空格。。。这行不通

  • 如果你真的是指喜欢,那么把喜欢和%放回去,但这似乎是糟糕的形式。而你不需要。php中变量前后。我在那里不是一个大的开发人员,所以我可能在考虑其他事情。

    您的sql查询在某个时候会返回一个不明确的错误,或者返回一个包含名称的列,找不到产品。我在SQL查询中添加了别名。如果你不明白。你可以从这里读起来

    如果你

    还可以尝试使用mysqli,因为从PHP开始,mysql就被弃用了 5.5.0

    $servername=“yourhost”;
    $username=“username”;
    $password=“password”;
    $dbname=“myDB”;
    //创建连接
    $conn=newmysqli($servername、$username、$password、$dbname);
    //检查连接
    如果($conn->connect\u错误){
    die(“连接失败:”.$conn->connect\U错误);
    } 
    $sql=(“选择customer.name作为名称,customer.email作为电子邮件,customer.phone作为电话,product.product作为产品名称,product.price作为来自客户的价格,其中customer.sl_no=product.sl_no和customer.sl_no类似“%$search%”或product.sl_no类似“%$search%”);
    $result=$conn->query($sql);
    如果($result->num_rows>0){
    //每行的输出数据
    而($row=$result->fetch_assoc()){
    回声“客户””;
    回显“客户名称:.”行[“名称”]。“
    ”; 回显“客户电子邮件:.”行[“电子邮件”]。“
    ”; 回显“客户电话:.”行[“电话”]。“
    ”; 回声“---”; 回声“产品””; echo“产品名称:”.$row[“产品名称”]。“
    ”; 回音“产品价格:.”行[“价格”]。“
    ”; 回声“----”; 回声“---”; } }否则{ 回显“0结果”; } $conn->close();
    别忘了首先通过您的数据库测试或运行查询 UI/phpmyadminCLI以了解您应该期望的结果


    希望这有帮助。

    如何获取结果如何运行此查询?很可能你忘了循环。说。即使是这样也不安全$result\u set=mysql\u查询($sql);if($row=mysql\u fetch\u数组($result\u set)){internal JOIN需要一个
    on
    子句。
    on customer.sl_no=product.sl_no
    where
    之前,然后你只需要
    where customer.sl_no像“%$search%”
    然后你必须迭代结果集。就目前而言,我很惊讶你在没有on子句的情况下使用internal JOIN得到任何结果或者没有意义。如果SL_no in product是一个FK,它就不可能存在,除非它在customer表中是pk。因此在product中搜索它没有意义。那么我猜问题在于PHP中的循环逻辑。我认为您需要纠正不止一个问题…SQL中的一些问题,PHP中的一些问题。
    $sql = ("SELECT * 
             FROM customer C 
             INNER JOIN product P 
               ON C.sl_no = P.SL_NO 
             WHERE C.sl_no = '$search'");
    
      $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();