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

时间:2019-06-01 14:25:02

标签: php sql

我有一个网站,用于搜索订单ID,如果找到该ID,则在php上回显它。问题是,如果存在重复的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>";

}
?>

如果在mysqli数据库中有两个重复的结果,则结果返回“输入的ID无效”。我知道我只需更改订单ID,就不必重复它,但这不是我想要的。

1 个答案:

答案 0 :(得分:0)

不要检查count是否为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>";
}
?>