2017-03-07 1 views
-2

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 ...

+2

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

+0

Aber ich habe ihm eine Variable $ _POST ['name'] zugewiesen, wie kann es Nullwert sein? Ich verstehe es nicht ... – MKD

+1

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

Antwort

2

Der Fehler scheint ganz klar. Sie haben eine Spalte in der Tabelle, die keinen NULL-Wert annehmen kann.

Ich würde vermuten, dass es nicht einer der Spalte, wo Sie explizit einen Wert bereitstellen (name, surname, employment_date). Sie müssen sich die Definition der Tabelle ansehen und nach einer anderen Spalte suchen, die als NOT NULL (oder vielleicht PRIMARY KEY ohne Standardwert) definiert ist.

+0

Meh, ich kann keine Fehler in meinen Tabellenspalten finden:/ – MKD

+0

@Godron Linoff fand in meiner Tabelle Spalte Wert-ID, die 'PRIMARY KEY' ist, was soll ich damit machen? Sorry für dumme Fragen, aber ich versuche nur zu lernen – MKD

+1

@MKD: Idealerweise sollte es eine 'AUTOINCREMENT'-Spalte sein. Die Fehlermeldung bezieht sich zwar auf die Spalte 'name', nicht auf die Spalte' id'. Sie versuchen, einen 'null'-Wert in' name' zu ​​schreiben, der Nullen nicht zulässt. – David

Verwandte Themen