PDO 异常 SQLSTATE [23000]:在 php 中
Posted
技术标签:
【中文标题】PDO 异常 SQLSTATE [23000]:在 php 中【英文标题】:PDO excpetion SQLSTATE[23000]:in php 【发布时间】:2017-11-03 05:27:36 【问题描述】:我正在使用 PDo 和 OOP 使用 xampp 将数据插入数据库 mysql ,插入空值时出错, 这段 sql 代码注意 id 自动递增,它工作正常
CREATE TABLE `consumer` (
`Consumer_ID` int(8) NOT NULL,
`FName` varchar(20) NOT NULL,
`LName` varchar(20) NOT NULL,
`Email` varchar(35) NOT NULL,
`Passwords` varchar(255) NOT NULL,
`Gender` char(1) NOT NULL,
`Birth_Year` int(4) DEFAULT NULL,
`City` varchar(20) NOT NULL,
`Neighborhood` varchar(20) NOT NULL,
`Mobile_Number` int(11) NOT NULL,
`Contact_Preference` varchar(15) NOT NULL,
`Status` char(1) DEFAULT 'a',
`Longitude` float(10,6) DEFAULT NULL,
`Latitude` float(10,6) DEFAULT NULL,
`Join_Date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`Last_Login_Date` timestamp NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE `consumer`
ADD PRIMARY KEY (`Consumer_ID`),
ADD UNIQUE KEY `Email` (`Email`);
ALTER TABLE `consumer`
MODIFY `Consumer_ID` int(8) NOT NULL AUTO_INCREMENT;
这个连接数据库的代码可以正常工作
<?php
class dbconnection
Private $server = "localhost";
Private $database = "*****";
Private $userName = "*****";
Private $password = "*****";
public function connect()
try
$db = new PDO("mysql:host=$this->server;dbname=$this->database",
$this->userName, $this->password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db;
catch(PDOException $e)
echo "Connection failed: " . $e->getMessage();
public function disconnect()
$db = null;
return $db;
?>
消费类,有异常错误
<?php
require 'dbconnection.class.php';
class consumer
Public function register($FName,$LName,$Email,$Passwords,$Gender,$Birth_Year,$City,$Neighborhood,$Mobile_Number,$Contact_Preference,$Longitude,$Latitude)
try
$connection = new dbconnection;
$db = $connection->connect();
$Query = $db->prepare("INSERT INTO consumer(FName,LName,Email,Passwords,Gender,Birth_Year,City,Neighborhood,Mobile_Number,Contact_Preference,Longitude,Latitude)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
$Query->bindParam(1,$Fname);
$Query->bindParam(2,$Lname);
$Query->bindParam(3,$Email);
$Query->bindParam(4,$Password);
$Query->bindParam(5,$Gender);
$Query->bindParam(6,$Birth_Year);
$Query->bindParam(7,$City);
$Query->bindParam(8,$Neighborhood);
$Query->bindParam(9,$Mobile_Number);
$Query->bindParam(10,$Contact_Preference);
$Query->bindParam(11,$Longitude);
$Query->bindParam(12,$Latitude);
$Query->execute();
return $db->lastInsertId();
$db = $connection->disconnect();
catch (PDOException $e)
exit($e->getMessage());
$test = new consumer;
$test->register('ahmed','ahmed','ahmed','ahmed','4','2018','cairo','naser',01121980528,'now',5,9);
?>
【问题讨论】:
尝试阅读实际的错误信息。您可能正在尝试插入与您的表定义不匹配的内容......例如 - 电话号码 【参考方案1】:注意变量。
您将函数参数定义为$FName,$LName
,但您在查询绑定中使用了$Fname,$Lname
。
变量名区分大小写。
$Passwords
和 $Password
也不同。
【讨论】:
以上是关于PDO 异常 SQLSTATE [23000]:在 php 中的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE [23000]:完整性约束违规:1048 laravel 5.7
symfony2 中的 MySQL (PDO) 出错:驱动程序中发生异常:SQLSTATE [HY000] [1049]
致命错误:未捕获的异常“PDOException”,带有消息“SQLSTATE [42000]:语法错误或访问冲突 PHP 和 PDO
PDO 异常 SQLSTATE[HY000] [2002] Yii2 上的 Elastic Beanstalk 和 RDS 连接超时