[SQL] PDO SQL 상태 "00000"하지만 여전히 오류? [복제]
SQLPDO SQL 상태 "00000"하지만 여전히 오류? [복제]
아무도 그 이유를 설명 할 수
$sql->execute($params);
반환 FALSE 반면,
print $pdo->errorCode();
print_r($pdo->errorInfo());
두 수단이 문서의 성공에 따라 SQLSTATE 00000을 반환? 너무, 왜 SQLSTATE에서 성공 메시지를받을 수 있나요 ...는 INSERT 아무것도 실제로 데이터베이스에 삽입되는입니까?
그것이 도움이 경우,이 코드는 ...
$sql = $pdo->prepare("
INSERT INTO user (
username, fname, pass, salt, email,
loc_id_home, country_id_home, region_id_home,
cont_id_home, timestamp_reg, timestamp_upd, timestamp_lastonline,
online_status, gender, birthdate
)
VALUES (
:username,:fname,:pass,:random_salt,:email,
:loc_id_home,:country_id_home,:region_id_home,
:cont_id_home,'".time()."','".time()."','".time()."',
1,:gender,:birthdate)
");
$params=array(
':username'=>$username,
':fname'=>$fname,
':pass'=>$pass,
':random_salt'=>$random_salt,
':email'=>$email,
':loc_id_home'=>$loc_id_home,
':country_id_home'=>$country,
':region_id_home'=>$region,
':cont_id_home'=>$continent,
':gender'=>$gender,
':birthdate'=>$birthdate
);
$sql->execute($params);
print $pdo->errorCode();
print_r($pdo->errorInfo());
해결법
-
==============================
1.$ pdo-> ERRORINFO ()가 성공적으로 실행 된 마지막 문장을 의미하기 때문이다. $ 이후 SQL-> 거짓 ()가 반환을 실행, 그것은 (아무것도 또는 쿼리 이전에 하나) 그 진술을 참조 할 수 없습니다.
$ pdo-> ERRORINFO ()가 성공적으로 실행 된 마지막 문장을 의미하기 때문이다. $ 이후 SQL-> 거짓 ()가 반환을 실행, 그것은 (아무것도 또는 쿼리 이전에 하나) 그 진술을 참조 할 수 없습니다.
$는 SQL-> ()는 false를 반환 실행하는 이유에 관해서는, 나도 몰라 ... 중 하나가 당신의 $ 문제는 배열을 PARAMS 또는 데이터베이스 연결.
참고 : PHP 설명서는 (http://php.net/manual/en/pdo.errorinfo.php) 수단 정확히 "데이터베이스 핸들 마지막 작업"을 정의하지 않지만, 바인딩 매개 변수에 문제가 발생했을 경우, 그 오류가 PDO 내부 데이터베이스와의 상호 작용없이 발생했을 것입니다. $ pdo-> ERRORINFO ()가 유효한지, true를 돌려) $가 pdo-> (실행하면라고하는 것이 안전합니다. $가 pdo->) (실행 false를 돌려주는 경우, $ pdo-> ERRORINFO의 동작은 () 명시 적으로 문서에서 삭제되지 않습니다. 내 경험에서 올바르게 기억, MySQL은 어떤 작업이 수행되지 않은 경우 false를 반환 오류를 반환하는 경우에도, 진정한 반환을 실행합니다. 문서를 특정하지 않기 때문에, 그것은 DB 드라이버 특정 될 수 있습니다.
사용자가 지적했듯이이 대답은 문서가 명시 적으로 해석을 재확인하지 않습니다, 그것은 2012 년 9 월에 작성되었을 때의 같은 실제적인 경험을 반영한다. 또한 단지 특정 데이터베이스 드라이버 구현을 반영 할 수 있지만, 항상 $이 pdo->) (실행하는 경우는 $ pdo-> ERRORINFO ()가 유효한지, true를 돌려주는 것은 사실이어야한다.
또한 세트 PDO를 할 수 있습니다 : 당신의 연결 순서 ERRMODE_EXCEPTION을. 예외 처리는 불필요 확인하고 오류를 조회 할 수 있습니다.
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
-
==============================
2.내가 직면 유사한 문제,
내가 직면 유사한 문제,
이 남자 다운 인해 쿼리 오류로, PHP - myadmin하거나 쿼리 구문이 null을 떠나거나 열을 mentioan하지 같은 올바른 다른 간단한 오류 인 경우 쿼리가 fine.Even를 작동하는지 다른 쿼리 주자 및 확인에 쿼리를 실행하려고 발생 세트로 테이블 구조에 NOT NULL이 오류가 발생할 것입니다. (이 날에 의해 만들어진 errror했다)
user1122069가) ($ pdo-> ERRORINFO에 대한 이유를 설명 말했듯이 아무 잘못이 원인 일 수 있습니다입니다
이 도움이 희망 :)
-
==============================
3.PHP 매뉴얼에서 :
PHP 매뉴얼에서 :
PDO :: ERR_NONE (문자열) SQL 문이 성공적으로 오류나 경고와 함께 발행 된 것을 의미 SQLSTATE '00000'에 해당한다. 에러가 발생하면 결정하기 위해 PDO :: errorCode를 () 또는 PDOStatement :: errorCode를 (을) 검사 할 때이 상수는 사용자의 편의를위한 것입니다. 이 어쨌든 오류 상태를 제기하는 방법의 반환 코드를 검사하여 인 경우에 당신은 일반적으로 알 수 있습니다.
이 기록에 삽입했던 것처럼 그래서 소리. 테이블에서 마지막 레코드 ID를 확인 ... 어쩌면 당신은 단지 그것을 놓친?
-
==============================
4.나는 한 번에이 오류가 발생했다. 난 단지 모든 오류에 대한 하나 개의 서버에 있어요. 다른 서버는 동일한 오류를 올바르게 오류를보고합니다. 즉, MySQL의 클라이언트 구성 오류했습니다 믿고 나를 이끌었다. 나는 특정 오류를 해결 없지만, 당신의 구성을 확인 않았다.
나는 한 번에이 오류가 발생했다. 난 단지 모든 오류에 대한 하나 개의 서버에 있어요. 다른 서버는 동일한 오류를 올바르게 오류를보고합니다. 즉, MySQL의 클라이언트 구성 오류했습니다 믿고 나를 이끌었다. 나는 특정 오류를 해결 없지만, 당신의 구성을 확인 않았다.
-
==============================
5.다음에 phpMyAdmin에 결과 쿼리를 시도 인 print_r하여 $ SQL ()을 확인하고 쿼리를 복사하려고합니다. 희망은 이유를 얻을 것이다. 관련이없는 값의 기회가 될 것입니다.
다음에 phpMyAdmin에 결과 쿼리를 시도 인 print_r하여 $ SQL ()을 확인하고 쿼리를 복사하려고합니다. 희망은 이유를 얻을 것이다. 관련이없는 값의 기회가 될 것입니다.
from https://stackoverflow.com/questions/11519966/pdo-sql-state-00000-but-still-error by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 나는 긴 쿼리의 실행을 중지하면, 롤백합니까? (0) | 2020.07.07 |
---|---|
[SQL] ORA-00942 : 테이블 또는 뷰 (때 별도의 SQL 작업을하지만, 오라클 함수 내에서 작업을하지 않는) 존재하지 않습니다 (0) | 2020.07.07 |
[SQL] #OR에 전달 관계는 구조적으로 호환되어야합니다. 호환 값 : : 참고 문헌] (0) | 2020.07.07 |
[SQL] MySQL의의에 SQL 서버 상당 EXPLAIN (0) | 2020.07.07 |
[SQL] 한 셀의 값을 검색하기가 ExecuteReader () 메소드를 사용하는 방법 (0) | 2020.07.07 |