Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw do tabeli za pomocą metody tablicowej z identyfikatorem rodzica

To powinno wystarczyć. Daj mi znać, jeśli pojawi się inny problem.

<?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();
?>

Przy okazji, zanim przejdziesz dalej, przeczytaj więcej o instrukcjach parametrycznych. Spróbuj też zrozumieć kod, który ci przekazuję i przeczytaj komentarze. Ostatnim razem zmieniłem prawie wszystko i widzę w tym pytaniu, że zignorowałeś to wszystko. Co więcej, wydaje się, że nie rozumiesz logiki swojego kodu, więc zastanów się nad tym. Spróbuj zapisać każdy algorytm na papierze, a następnie przetestuj algorytm, a następnie zbuduj swoje aplikacje w oparciu o ten algorytm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie tabeli GeoIP z tabelą adresów IP w MySQL

  2. Używając Fetch w reakcji, potrzebujesz hasła do nazwy użytkownika, aby uzyskać dostęp do bazy danych

  3. Symulować DELETE CASCADE w MySQL?

  4. Z wyłączeniem rekordów, w których podzapytanie zwraca wyniki, które muszą się wzajemnie wykluczać

  5. Kopiuj dane z jednego pola do drugiego w każdym wierszu