我有一个网站,用于搜索订单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,就不必重复它,但这不是我想要的。
答案 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>";
}
?>