Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn vào bảng bằng phương thức mảng với ID mẹ

Điều này sẽ làm tốt. Hãy cho tôi biết nếu có bất kỳ vấn đề nào khác.

<?php
try {
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "2d_system";
    $conn = new mysqli($servername, $username, $password, $dbname);
    if($stmt = $conn->prepare($conn, "SELECT `Availability` FROM `number_availability` WHERE `Number`=? AND `GameCenter`=?")){
        foreach($_POST['gamecenter'] as $key => $value){
            $gamecenter = $_POST['gamecenter'][$key];
            $number = $_POST['number'][$key];
            $stmt->bind_param('ii', $number, $gamecenter); // if any of these values is a String, use 's' for that value instead (ii means integer-integer)
            $stmt->execute();
            if($conn->errno){
                throw new Exception("Error: could not check for availability: " . $conn->error);
            }
            $result = $stmt->get_result();
            $data = $result->fetch_array();
            if($data['Availability'] <= 0){
                unset($_POST['gamecenter'][$key]);
                unset($_POST['number'][$key]);
                unset($_POST['price'][$key]);
            }
        }
    }
    if($conn->errno){
        throw new Exception("Error: could not check for availability: " . $conn->error);
    }
    if(count($_POST['gamecenter']) > 0){
        if($conn->query("INSERT INTO `lottery_ticket` (`CreatedDateTime`) VALUES (now())")){
            $lotteryTicketID = $conn->insert_id;
            foreach($_POST['gamecenter'] as $key => $value){
                $gamecenter = $_POST['gamecenter'][$key];
                $number = $_POST['number'][$key];
                $price = $_POST['price'][$key];
                if($stmt = $conn->prepare("INSERT INTO `" . strtolower($gamecenter) . "_draw` (`LotteryId`, `" . $gamecenter . "_Number`, `Price`) VALUES (?, ?, ?)")){
                    $stmt->bind_param('idd', $lotteryTicketID, $number, $price);
                    $stmt->execute();
                }
                if($conn->errno){
                    throw new Exception("Error: could not execute query/queries: " . $conn->error);
                }
            }
        }
        if($conn->errno){
            throw new Exception("Error: could not execute query/queries: " . $conn->error);
        }
        echo "Records added successfully.";
    } else {
        throw new Exception("Error: no available numbers.");
    }
} catch(Exception $e){
    echo $e->getMessage();
}
$conn->close();
?>

Nhân tiện, trước khi bạn tiếp tục phát triển, hãy đọc thêm về các câu lệnh được tham số hóa. Ngoài ra, hãy cố gắng hiểu mã tôi đang cung cấp cho bạn và đọc các nhận xét. Thời gian qua tôi đã thay đổi khá nhiều mọi thứ và tôi có thể thấy trong câu hỏi này rằng bạn đã bỏ qua tất cả những điều đó. Hơn nữa, bạn dường như không hiểu logic của mã của mình, vì vậy hãy suy nghĩ về nó. Hãy thử viết mọi thuật toán ra giấy, sau đó kiểm tra thuật toán và sau đó xây dựng các ứng dụng của bạn dựa trên thuật toán đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python:Làm cách nào để lấy thời gian từ đối tượng datetime.timedelta?

  2. Lấy dữ liệu ngẫu nhiên từ cơ sở dữ liệu MySQL nhưng không lặp lại dữ liệu

  3. MySQL Chọn cả Cái này và Cái kia

  4. MYSQL:Phương thức CHỌN - nhưng không hiển thị bản sao / GROUP hoặc DISTINCT?

  5. Điều gì xảy ra khi tôi gửi boolean True-False đến một câu lệnh PDO dưới dạng một tham số được liên kết với một trường int?