sql >> Database >  >> RDS >> Mysql

Invoegen in tabel met behulp van matrixmethode met bovenliggende ID

Dit zou gewoon goed moeten doen. Laat het me weten als er verderop een ander probleem is.

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

Trouwens, voordat je verder gaat met ontwikkelen, lees meer over geparametriseerde statements. Probeer ook de code die ik je geef te begrijpen en lees de opmerkingen. De vorige keer heb ik vrijwel alles veranderd en ik kan in deze vraag zien dat je dat allemaal hebt genegeerd. Bovendien lijkt u de logica van uw code niet te begrijpen, dus denk er eens over na. Probeer elk algoritme op papier te schrijven, test het algoritme en bouw vervolgens uw applicaties op basis van dat algoritme.




  1. Hoe kan ik een .NET-toepassing implementeren die ODAC gebruikt zonder de hele component voor de gebruiker te installeren?

  2. Niet-Engelse karakters verschijnen als vraagtekens op mijn php-pagina - verschijnen prima in database

  3. SQL Server-trigger voegt waarden van nieuwe rij in een andere tabel met veel-op-veel-relatie in

  4. Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?