2012-02-28 5 views
0
과 부분적으로 만 업데이트

코드 : PHP IBM의 SQL DB2의 문은 오류 메시지

$sql =  'UPDATE library/tablename ' . 
      'SET foo1 = \'THIS IS A TEST\', foo2 = 1234567890, foo3 = 1234'. 
      'WHERE foo4 = 165436'; 

    $stmt = db2_prepare($dbConn, $sql) 
     or die("Error: Unable to prepare statement"); 

    $exec = db2_execute($stmt); 

내가 PHP에서 이것을 실행하고 나는 테이블을보고 이동 실행 후 나는 foo1은 필드가 변경된 것을 볼 수 , foo2와 foo3은 기본값 인 0으로 유지됩니다.

IBM 터미널에서 "strsql"의 $ sql 문을 실행하면이 필드가 실행되고 모든 필드가 지정한 값으로 업데이트됩니다. 여기에 무슨 일이 벌어지고 있는지에 대해 누구나 알고 있습니까? 이것은 나를 몇 시간 동안 곤란하게 만들었다.

+0

-0.49. 준비된 명령문 API *를 사용하면서 SQL *에 값을 임베드 할 수 있습니다. – cHao

+0

나는 placeholder를 사용하고 바인딩을하고 있었지만 그 중 하나는 작동하지 않았습니다. – Bead

답변

1

실행을 실행 한 후에는 SQLSTATE의 값을 확인하고 싶을 것입니다. 그러면 DB2가 사용자에게 던지는 실제 오류가 표시됩니다.

PHP에서 db2_stmt_error()을 사용하여 SQLSTATE를 검색 할 수 있습니다. 특정 상태 (마지막으로 실행 한 특정 리소스)를 SQL 실행 상태로 볼 수 있습니다.

사람이 읽을 수있는 SQL 오류 메시지를 출력하려면 db2_stmt_errormsg()을 사용하면 SQLSTATE와 해당 오류 메시지 문자열이 출력됩니다.

+0

이 명령문을 실행 한 후 error_log (db2_stmt_error(). '-'. db2_stmt_errormsg());를 실행 해 보았습니다. 그리고 난 그냥 로그에 '-'이 나타납니다. – Bead

+0

와우, 좋아, PHP 나 SQL에는 아무런 문제가 없었습니다. 필드 값을 설정 한 후 필드 값을 엉망으로 만드는 새로운 RPG 프로그램이있었습니다. 어쨌든 나를 도와 주셔서 감사합니다. – Bead