Die Liste der eingefügten Werte stimmt nicht mit der Spaltenliste überein: 1136 Die Spaltenanzahl stimmt nicht mit der Werteanzahl überein

Lesezeit: 4 Minuten

Benutzer-Avatar
Androidnation

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 übereinstimmt SQL 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

Benutzer-Avatar
Dk

Ihre Datenbanktabelle hat 35 Spalten

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

Wobei die Werte, die Sie übergeben, 34 Spalten sind

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)

Diese Nichtübereinstimmung der Spalten gibt Ihnen den Fehler.

Sie haben vergessen, den Wert für zu übergeben date_now Säule. Sobald Sie es bestanden haben, wird der Fehler behoben

SQLSTATE[21S01]: Werteliste einfügen stimmt nicht mit Spaltenliste überein: 1136 Spaltenanzahl stimmt nicht mit Werteanzahl in Zeile 1 überein

Die vorherige Antwort erklärt absolut das zugrunde liegende Problem, aber vielleicht ist es hilfreich, auch den Fehlerbericht zu verstehen. Es besteht aus zwei Teilen:

Werteliste einfügen stimmt nicht mit Spaltenliste überein: Die SQL-Anweisung besteht zuerst aus einer Liste von Spalten und dann aus einer Liste von Werten, diese beiden stimmen nicht überein.

1136 Die Spaltenanzahl stimmt nicht mit der Wertanzahl in Zeile 1 überein Das Problem besteht darin, dass die Anzahl der aufgelisteten Werte nicht mit der Anzahl der aufgelisteten Spalten übereinstimmt.

DIE SQL-Fehlercodes sind ziemlich knapp geschrieben und können undurchsichtig erscheinen, aber sobald Sie sie aufgeschlüsselt haben, ist die Bedeutung normalerweise recht einfach.

1018670cookie-checkDie Liste der eingefügten Werte stimmt nicht mit der Spaltenliste überein: 1136 Die Spaltenanzahl stimmt nicht mit der Werteanzahl überein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy