有很多与此相关的答案,但我无法找到有用的信息。我试图连接数据库并将用户输入的值插入其中,但我收到了这个错误,我真的不知道自己做错了什么。我在2个不同的文件中创建了2个不同的类,一个是connection.php,另一个是users.php(用于将用户插入数据库)有人可以帮我解决这个问题吗?
这是我的connection.php文件:
<?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();
?>
这是我的users.php文件:
<?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();
?>
我在users.php第27行遇到了这个错误,即:
$stmt->execute();
它说:
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
我知道这里有很多代码,但是如果有人会帮我的话,谢谢......
答案 0 :(得分:4)
错误似乎很清楚。表格中的列不能显示NULL
值。
我推测它不是明确提供值的列之一(name
,surname
,employment_date
)。您需要查看表的定义并查找另一个定义为NOT NULL
的列(或者PRIMARY KEY
,没有默认值)。
答案 1 :(得分:0)
如果您以该方式使用该列,请确保将该列标记为主键或auto_increment,或者如果要存储null,请将其标记为null。
答案 2 :(得分:0)
可能是与该领域相关的任何问题。检查HTML的拼写,名称和值之间的混淆等。 您的字段可能为空,因为没有找到您在字段中实际输入的值,因为每个代码都没有这样的字段(仅在您的屏幕上)。就我而言,
$new_user = array(
"id" => $_POST ['id'],
"fname" => $_POST['firstname']
但是HTML的值和名称都使用了fname和fname。
出现第一个错误:name =“ firstname”被写为vname =“ firstname” 然后混淆名称和HTML值。
您没有发布HTML。错误也许在那里。