2017-12-18 1 views
-1

이 문제를 해결하는 방법?PDO - 잡히지 않은 PDOException : SQLSTATE [23000] : 무결성 제약 조건 위반

catch되지 않은 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를 사용하여 I 이 오류가 발생했습니다

고유 키없이 데이터 테이블을 만들면 잘 작동합니다.

내 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(); 

나는 MYSQLI에 시도 그것이 내가

+0

테이블을 UNIQUE로 설정 했으므로 예외가 발생하므로 동일한 필드에 대해 동일한 값을 여러 번 설정할 수 없습니다. 아니면 내가 당신의 질문을 오해 했습니까? – Geshode

+0

당신은 맞습니다 중복 항목을 피하는 데 UNIQUE를 사용하지만 MYSQLI에서는 잘 작동하지만 PDO에서 나는이 오류가 있습니다 –

+0

mysqli와 pdo를 사용할 때 정확히 같은 값 (이미 존재하는)을 삽입하고 있습니까? –

답변

0

는 당신이이 오류가있어 어떤 문제없이하지만 PDO에서 작동

잘 작동 고유 키 개념을 $stmt->execute();를 제거하는 경우 그래서이 필드에 삽입 duplicate value을 허용하지 titlestr에 대한 unique key을 정의

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

UNIQUE 제약 조건은 열의 모든 값이 서로 다른지 확인합니다.

UNIQUE 및 PRIMARY KEY 제약 조건은 열 또는 열 집합에 고유성을 보장합니다.

PRIMARY KEY 제약 조건에는 자동으로 UNIQUE 제약 조건이 있습니다.

+0

네,하지만 PDO의 MYSQLI에서 잘 작동합니다.이 오류가 있습니다. –

관련 문제