Fehler Column '...' cannot be null

guenter024

Erfahrenes Mitglied
Hallo PHP-Freunde,

brauche Eure Hilfe, da ich hier einfach nicht mehr weiterkomme.
Die Fehlermeldung ist wie im Titel.
Nachfolgenden Code habe ich aus "quakenet" modifiziert:

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include ('dbconnect.php');

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    //Code zum Eintragen

    $sql = 'INSERT INTO
                newsletter(Kundennummer, Mailadresse)
            VALUES
                (?, ?)';
    $stmt = $dbverbindung->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$dbverbindung->error);
    }
    $stmt->bind_param('ss', $kundennummer, $mailadresse);
    if (!$stmt->execute()) {
        die ('Query konnte nicht ausgef&uuml;hrt werden: '.$stmt->error);
    }
    echo '<p class="info">Mailadresse hinzugef&uuml;gt.</p>';

} else {

    //Code zum Auslesen der Eintr&auml;ge
    $sql = 'SELECT Kundennummer, Mailadresse FROM newsletter ORDER BY Kundennummer';
    $result = $dbverbindung->query($sql);
    if (!$result) {
        die('Der Query konnte nicht ausgef&uuml;hrt werden: '.$dbverbindung->error);
    }

    if ($result->num_rows) {
        while ($row = $result->fetch_assoc()) {
            echo "<div>\n";
            echo htmlspecialchars($row['Kundennummer'])."\n";
            echo " | \n";
            echo htmlspecialchars($row['Mailadresse'])."\n";
            echo "</div>\n";
        }
    } else {
        echo '<p class="info">Es sind keine Mailadressen vorhanden</p>';
    }  ?>
    <form action="dbwrite.php" method="post">
    <fieldset>
    <legend>In Newsletter-Verteiler Eintragen</legend><br>
    <label>Kundennummer: <input type="text" name="Kundennummer" maxlength="5" size="5" /></label>
    <label>Mailadresse: <input type="text" name="Mailadresse" size="30" /></label>
    <input type="submit" name="Eintrag" value="OK" />
    </fieldset>
    </form>
    <?php

}

?>

Und damit hab ich die Tabelle erstellt:

PHP:
<?
error_reporting(E_ALL);
ini_set('display_errors', 1);

include ("dbconnect.php");

$sql = 'CREATE TABLE newsletter(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Kundennummer INT(10) NOT NULL,
    Mailadresse VARCHAR(100) NOT NULL);';

$result = $dbverbindung->query($sql);
if (!$result) {
    die ('Etwas stimmte mit dem Query nicht: '.$dbverbindung->error);
}

echo "Die Tabelle wurde angelegt\n<br>\n";
echo "<a href=\"dbwrite.php\">Weiter</a>\n";

?>

Dies ist die Fehlermeldung im Browser:
Verbindung zur Datenbank wurde aufgebaut

Query konnte nicht ausgeführt werden: Column 'Kundennummer' cannot be null


Danke im Voraus für Eure Hilfe.
 
Hi,

woran könnte das liegen?

Der SQL-Befehl lautet
Kundennummer INT(10) NOT NULL,

Das bedeutet doch, das nur Zahlen vorkommen, oder?
Wenn nun Zahlen eingegeben werden sollte dies doch stimmen und in die DB eingetragen werden. Macht's aber irgendwie nicht...

Sollte ich das mal ändern?


EDIT: Hab mal VARCHAR probiert, bringt aber nichts...
 
Ja,

habs jetzt auch gefunden.
So muss es sein:

PHP:
if (isset($_POST['Eintrag'])) {
    //Code zum Eintragen
    $kundennummer=$_POST['Kundennummer'];
    $mailadresse=$_POST['Mailadresse'];

    $sql = 'INSERT INTO
                newsletter(Kundennummer, Mailadresse)
            VALUES
                (?, ?)';
    $stmt = $dbverbindung->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$dbverbindung->error);
    }
    $stmt->bind_param('ss', $kundennummer, $mailadresse);
    if (!$stmt->execute()) {
        die ('Query konnte nicht ausgef&uuml;hrt werden: '.$stmt->error);
    }
    echo '<p class="info">Mailadresse hinzugef&uuml;gt.</p>';

} else {

Danke für die Hilfe.
Manchmal genügt einfach ein Fingerzeig :-)


EDIT: Aber irgendwie ist das Beispielskript von quakenet auch ziemlich buggy
... nicht unbedingt zu empfehlen ...
 
Zurück