Ich habe diesen PHP-MySQL-Einfügungscode:
$sqlTeeth = "INSERT INTO teeth (id_logged, patient_id, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eightteen, nineteen, twenty, twone, twtwo, twthree, twfour, twfive, twsix, twseven, tweight, twnine, thirty, thone, thtwo, date_now) VALUES (:id_logged, :patient_id, :one, :two, :three, :four, :five, :six, :seven, :eight, :nine, :ten, :eleven, :twelve, :thirteen,
:fourteen, :fifteen, :sixteen, :lone, :ltwo, :lthree, :lfour, :lfive, :lsix, :lseven, :leight, :lnine, :lten, :leleven, :ltwelve, :lthirteen,
:lfourteen, :lfifteen, :lsixteen)";
$sqlTeethStmt = $conn->prepare($sqlTeeth);
$sqlTeethStmt->bindValue(":id_logged", $id_logged);
$sqlTeethStmt->bindValue(":patient_id", $patient_id);
$sqlTeethStmt->bindValue(":one", $one);
$sqlTeethStmt->bindValue(":two", $two);
$sqlTeethStmt->bindValue(":three", $three);
$sqlTeethStmt->bindValue(":four", $four);
$sqlTeethStmt->bindValue(":five", $five);
$sqlTeethStmt->bindValue(":six", $six);
$sqlTeethStmt->bindValue(":seven", $seven);
$sqlTeethStmt->bindValue(":eight", $eight);
$sqlTeethStmt->bindValue(":nine", $nine);
$sqlTeethStmt->bindValue(":ten", $ten);
$sqlTeethStmt->bindValue(":eleven", $eleven);
$sqlTeethStmt->bindValue(":twelve", $twelve);
$sqlTeethStmt->bindValue(":thirteen", $thirteen);
$sqlTeethStmt->bindValue(":fourteen", $fourteen);
$sqlTeethStmt->bindValue(":fifteen", $fifteen);
$sqlTeethStmt->bindValue(":sixteen", $sixteen);
$sqlTeethStmt->bindValue(":lone", $lone);
$sqlTeethStmt->bindValue(":ltwo", $ltwo);
$sqlTeethStmt->bindValue(":lthree", $lthree);
$sqlTeethStmt->bindValue(":lfour", $lfour);
$sqlTeethStmt->bindValue(":lfive", $lfive);
$sqlTeethStmt->bindValue(":lsix", $lsix);
$sqlTeethStmt->bindValue(":lseven", $lseven);
$sqlTeethStmt->bindValue(":leight", $leight);
$sqlTeethStmt->bindValue(":lnine", $lnine);
$sqlTeethStmt->bindValue(":lten", $lten);
$sqlTeethStmt->bindValue(":leleven", $leleven);
$sqlTeethStmt->bindValue(":ltwelve", $ltwelve);
$sqlTeethStmt->bindValue(":lthirteen", $lthirteen);
$sqlTeethStmt->bindValue(":lfourteen", $lfourteen);
$sqlTeethStmt->bindValue(":lfifteen", $lfifteen);
$sqlTeethStmt->bindValue(":lsixteen", $lsixteen);
$sqlTeethStmt->execute();
Wenn ich etwas zur Datenbank hinzufüge, bekomme ich diesen Fehler:
SQLSTATE[21S01]: Werteliste einfügen stimmt nicht mit Spaltenliste überein: 1136 Spaltenanzahl stimmt nicht mit Werteanzahl in Zeile 1 überein
Jede Hilfe wird geschätzt.
Was ist nicht klar? Die Botschaft ist schlicht und einfach: Die Spaltenanzahl stimmt nicht mit der Wertanzahl überein
– B-und-P
31. März 2016 um 7:49 Uhr
Es ist mehr als nur ein bisschen besorgniserregend, dass Ihre Spaltenliste so groß wird. Was ist da drin los? Ist das richtig normalisiert? Wenn dies zur Routine wird, sollten Sie die Verwendung eines ORM untersuchen, um dies für Sie zu kapseln.
– Tadman
31. März 2016 um 7:57 Uhr
Überprüf den
bindValue(':foo:, $value);
wenn die Feldnummer mit Ihrer übereinstimmtSQL fields
– Matt Magallo
31. März 2016 um 7:57 Uhr
Ich würde Ihre Datenbank umstrukturieren, oder werden nie (ich meine, wirklich nie) mehr Spalten benötigt, als in Ihrem Code verwendet werden?
– Ramon Bakker
31. März 2016 um 8:14 Uhr
@androidnation Ich würde a verwenden Entwicklungsrahmen wie Laravel helfen, dies besser zu organisieren. Sie haben normalerweise eine Datenbankschicht, mit der Sie Dinge tun können wie
$record->save()
Anstelle dieser gigantischen Menge an Code haben Sie hier.– Tadman
31. März 2016 um 19:08 Uhr