2017-12-18 162 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上正常工作我得到這個錯誤 –

相關問題