Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 我无法查询mysql数据库中是否有重复项//_Php_Sql - Fatal编程技术网

Php 我无法查询mysql数据库中是否有重复项//

Php 我无法查询mysql数据库中是否有重复项//,php,sql,Php,Sql,我有一个网站,搜索一个订单id,并在php上回显它,如果它找到了那个id。问题是,如果有一个重复的id,它不会正确地查询它 我试着在网上搜索答案 <?php require('connect.php'); $order_id = $_POST['order_id']; $conn = mysqli_connect("", "", "", ""); $query = "SELECT * FROM `orders` WHERE order_id='$order_id' "; $resul

我有一个网站,搜索一个订单id,并在php上回显它,如果它找到了那个id。问题是,如果有一个重复的id,它不会正确地查询它

我试着在网上搜索答案

<?php
require('connect.php');

$order_id = $_POST['order_id'];

$conn = mysqli_connect("", "", "", ""); 
$query = "SELECT * FROM `orders` WHERE order_id='$order_id' ";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
$count = mysqli_num_rows($result);

if ($count == 1) {

    $sql = "SELECT `order_id`, `firstname`, `lastname`, `order_name`, 
                    `qty`, `price`, `total`, `reg_date`, `status` 
            FROM `orders` 
            WHERE order_id='$order_id'";
    $result = $conn->query($sql);


    while($row = $result->fetch_assoc()) {


        echo"<div id='orders'>";
            echo "ORDER NUMBER: " . $row["order_id"];
                echo"<br>";
                echo"<br>";
            echo "FIRST NAME: " . $row["firstname"];
                echo"<br>";
                echo"<br>";
            echo "LAST NAME: " . $row["lastname"];
                echo"<br>";
                echo"<br>";
            echo "ORDER: " . $row["order_name"];
                echo"<br>";
                echo"<br>";
            echo "QUANTITY: " . $row["qty"];
                echo"<br>";
                echo"<br>";
            echo "PRICE: " . $row["price"];
                echo"<br>";
                echo"<br>";
            echo "ORDER TOTAL: " . $row["total"];
                echo"<br>";
                echo"<br>";
            echo "STATUS: " . $row["status"];
                echo"<br>";
                echo"<br>";
            echo "DATE ORDERED: " . $row["reg_date"];

            echo"</div>";
        }
    }else{
        echo"<div id='orders'>";
        echo"INVALID ID ENTERED";
        echo"</div>";

}
?>

不检查计数是否为1,检查计数是否为0。这样,如果有重复的订单,您将显示所有订单

也不需要对同一行执行两次查询。只需执行获取所需列的查询,并测试其计数

并使用准备好的语句来防止SQL注入

<?php
require('connect.php');

$order_id = $_POST['order_id'];

$conn = mysqli_connect("", "", "", ""); 
$sql = "SELECT `order_id`, `firstname`, `lastname`, `order_name`, 
                `qty`, `price`, `total`, `reg_date`, `status` 
        FROM `orders` 
        WHERE order_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $order_id);
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows;

if ($count == 1) {
    $stmt->bind_result($order_id, $firstname, $lastname, $order_name, $qty, $price, $total, $status, $reg_date);
    while($row = $result->fetch()) {
        echo"<div id='orders'>";
        echo "ORDER NUMBER: " . $order_id;
        echo"<br><br>";
        echo "FIRST NAME: " . $firstname;
        echo"<br><br>";
        echo "LAST NAME: " . $lastname;
        echo"<br><br>";
        echo "ORDER: " . $order_name;
        echo"<br><br>";
        echo "QUANTITY: " . $qty;
        echo"<br><br>";
        echo "PRICE: " . $price;
        echo"<br><br>";
        echo "ORDER TOTAL: " . $total;
        echo"<br><br>";
        echo "STATUS: " . $status;
        echo"<br><br>";
        echo "DATE ORDERED: " . $reg_date;
        echo"</div>";
    }
}else{
    echo"<div id='orders'>";
    echo"INVALID ID ENTERED";
    echo"</div>";
}
?>

你能给我们看一下这个
订单的模式吗
表格也请更改这一行
回显“输入的ID无效”
to
echo“输入的ID无效行计数=$Count”并向我们展示结果我知道我可以简单地更改订单id,这样就不必重复,但这不是我想要的,好的,但是你想怎么做?它返回的是输入的有效id行计数=2