2016-11-13 15 views
-2

Ich habe ein Reservierungsformular für die Unterkunft erstellt. Der Benutzer füllt das Formular aus und übermittelt es. Es soll ein Reservierungssatz gemacht werden, der dann in eine Reservierungstabelle eingefügt wird.Reservierungsdatensatz in PHP-Datenbank einfügen

Dies ist der Code, der

$reservationsTable = "Reservations"; 
$r1 = (rand(11111,99999)); 

createReservationRecord($reservationsTable, [$r1, $date,$dormRecord[id], $_POST["CWID"], $_POST["firstName"], $_POST["lastName"], $_POST["class"], $_POST["gender"], $_POST["fullyEquippedKitchen"], $_POST["laundry"], $_POST["specialNeeds"]]); 

Dies sind die Funktionen in die Datenbank als ein Datensatz eingefügt wird, die diese Daten umwandeln:

function createRecord($table, $values) { 
    echo "This is working"; 
    return insertInto($table, ["name","class","specialNeeds","laundry","fullyEquippeKkitchen","roomsAvailable","roomsReserved","roomCapacity"], $values); 

} 

function createReservationRecord($table, $values) { 
    echo "<br> in createReservationRecord(), table is \"$table\", values are ".print_r ($values)."\n<br>"; 
    return insertInto($table, ["id","reservationTime","ra_id","CWID","firstName","lastName","class", "gender","kitchen", "laundry", "specialNeeds"], $values); 
} 

function insertInto($table, $columns, $values) { 
    $sql = "INSERT INTO $table (" . implode(", ", $columns) . ") VALUES (" . implode(", ", $values) . ")"; 
    echo "Inserting a new record with SQL Statement: $sql\n<br>"; 
    return query($sql); 
} 

Wenn ich print_r ($ values) verwenden, um Überprüfen Sie das Array der Werte, die es nur zurückgibt 1. Ich bin nur nicht sicher, warum die Daten falsch gelesen werden.

+2

Warum so viele lavels von Datenbank-Abstraktions versuchen? Und nachdem du alles getan hast, bist du offen für SQL-Injection. Lösche alles und benutze PDO – e4c5

+0

Das ist nur so, damit ich die Daten sehen kann, wie es eingefügt wird, und wenn ich sicher bin, dass es keine Fehler gibt, kann ich den Code verdichten. – Katie

+0

verdoppeln und verdreifachen die Arbeit, um schlechten Code zu produzieren. Machen Sie es richtig beim ersten Mal – e4c5

Antwort

-1

ändern, benutzen Sie wieder Zecke in CuMn und einfache Anführungszeichen in Werte

$sql = "INSERT INTO $table (`" . implode("`, `", $columns) . "`) VALUES ('" . implode("', '", $values) . "')"; 
+0

Das funktioniert! Ich danke dir sehr! – Katie

-1

i in Ihrem Code sehen Fehler nicht aber

$sql = "INSERT INTO ". $table." (" . implode(", ", $columns) . ") VALUES (" . implode(", ", $values) . ")";