2017-12-18 108 views
-1

如何解决此问题?PDO - 未捕获的PDOException:SQLSTATE [23000]:完整性约束冲突

未捕获PDOException:SQLSTATE [23000]:完整性约束违规:1062重复条目

我使用的唯一键上我的表

CREATE TABLE `blog` (
    `id` int NOT NULL AUTO_INCREMENT, 
    `title` varchar(100) NOT NULL, 
    `str` varchar(100) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `title` (`title`), 
    UNIQUE KEY `str` (`str`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

如果我输入了相同的数据的时候,我得到这个错误

如果我创建没有UNIQUE KEY的datable它运行良好

我PDO插入代码

$sql = "INSERT INTO blog(title,str) VALUES(:title,:str)"; 
$stmt = $DBcon->prepare($sql); 
$stmt->bindparam(':title', $title,PDO::PARAM_STR); 
$stmt->bindparam(':str', $str,PDO::PARAM_STR); 
$stmt->execute(); 

如果删除$stmt->execute();的唯一键的概念运作良好

我试过的mysqli它工作没有任何问题,但是在PDO我得到这个错误

+0

嗯,它会抛出一个异常,因为您将表设置为UNIQUE,所以无法为同一个字段多次设置相同的值。或者我误解了你的问题? – Geshode

+0

你是对的我使用UNIQUE来避免重复条目,但在MYSQLI中效果很好,但在PDO中我得到了这个错误 –

+0

当你使用mysqli和pdo时,你确定插入了完全相同的值(已经存在)吗? –

回答

0

你有定义为​​为titlestr所以它不允许在该字段中插入duplicate value

UNIQUE KEY `title` (`title`), 
UNIQUE KEY `str` (`str`) 

UNIQUE约束确保列中的所有值都不相同。

UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。

PRIMARY KEY约束自动具有UNIQUE约束。

+0

是的,但它在PDO中的MYSQLI上正常工作我得到这个错误 –

相关问题