Es gab eine Menge Antworten dazu, aber ich konnte keine nützlichen Informationen finden. Ich versuche, eine Verbindung mit der Datenbank herzustellen und eingegebene Werte des Benutzers einzugeben, aber ich habe diesen Fehler und ich weiß wirklich nicht, was ich falsch mache. Ich habe 2 verschiedene Klassen in 2 verschiedenen Dateien erstellt, eine ist connection.php und die andere ist users.php (um die Benutzer in die Datenbank einzubauen) Könnte mir jemand helfen, das zu lösen?Integrity Constraint Verletzung: 1048 Spalte 'Name' kann nicht null sein Fehler
Hier ist meine connection.php Datei:
<?php
class Connection {
public $dbh;
// Setting Database Source Name (DSN)
public function __construct() {
$dsn = 'mysql:host=localhost;dbname=employees';
// Setting options
$options = array (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
// Making the connection to the database
try {
$this->dbh = new PDO($dsn, 'root', '', $options);
}
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
}
$connection = new connection();
?>
Und hier ist meine users.php Datei:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'connection.php';
class Users {
public $name;
public $surname;
public $employmentDate;
public $connection;
public function __construct($connection)
{
$this->connection = $connection;
if(isset($_POST['Submit'])) {
$this->name = $_POST['name'];
$this->surname = $_POST['surname'];
$this->employmentDate = $_POST['employmentDate'];
}
}
// Inserting users values to the database table
public function insertUserValues() {
$query= 'INSERT INTO employee (name,surname,employment_date)
VALUES (:name,:surname,:employmentDate)';
$stmt = $this->connection->dbh->prepare($query);
$stmt->bindValue(':name',$this->name, PDO::PARAM_STR);
$stmt->bindValue(':surname',$this->surname, PDO::PARAM_STR);
$stmt->bindValue(':employmentDate',$this->employmentDate, PDO::PARAM_STR);
$stmt->execute();
}
}
$users = new Users($connection);
$users->insertUserValues();
?>
Ich habe diesen Fehler auf users.php Linie 27, die ist:
$stmt->execute();
Und er sagt:
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
ich hier kenne, sind eine Menge Code, aber dank wenn jemand versucht, mir zu helfen ...
Sie versuchen, einen 'null'-Wert in die 'name'-Spalte einzufügen, die Nullen nicht erlaubt. Entfernen Sie diese Einschränkung entweder aus der Spalte oder geben Sie einen Wert für die Spalte an. (Es scheint, dass '$ this-> name'' null' ist.) – David
Aber ich habe ihm eine Variable $ _POST ['name'] zugewiesen, wie kann es Nullwert sein? Ich verstehe es nicht ... – MKD
Zum einen ist diese Abhängigkeit von '$ _POST' in Ihrer Klasse ein schlechtes Design. Der Wert sollte für den Konstruktor erforderlich sein, und es wird nicht davon ausgegangen, dass er in einer externen Abhängigkeit vorhanden ist. Wie für einen Nullwert, eindeutig, dass die Abhängigkeit nicht hatte, was Sie erwartet haben. Wenn ein Wert nicht existiert, ist er 'null'. Das ist etwas, was 'null' bedeutet. – David