2013-03-16 3 views
-1

처리 페이지에 두 개의 삽입이 있습니다. 첫 번째는 장애없이 작동합니다. 두 번째는 활성화되지 않습니다. 나는 PDO 쿼리를 사용하여 작동하는지 확인했지만 시도는하지 않았습니다.PDO 다중 실행 문제

 $cpinsert = $db->prepare('insert into Chatposts values (0, :chatid, :name, :url, :text, now(), :ipaddress, 0)'); 

     $cpinsert -> bindParam(':chatid', $chatroomid, PDO::PARAM_INT); 
     $cpinsert -> bindParam(':name', $name, PDO::PARAM_STR); 
     $cpinsert -> bindParam(':url', $url, PDO::PARAM_STR); 
     $cpinsert -> bindParam(':text', $text, PDO::PARAM_STR); 
     $cpinsert -> bindParam(':ipaddress', $ipaddress, PDO::PARAM_STR); 


      $cpinsert -> execute(); 

     // Needs an error checker 
     $cpid = $cpinsert ->lastInsertID(); 
     $cpinsert->closeCursor(); 

^테스트 할 수 없어서 lastinsertid에 대해 알지 못해도 괜찮습니다.

\ V/거기에는 아무 것도 시도하지 않고 실행됩니다. 뭔가가 실행되는 것을 방해하고 있거나 위의 연결을 제대로 닫지 않았습니다.

나는 내가 아는 모든 것을 시험해 보았습니다. 필자는 PDO를 처음 사용하기 때문에 약간의 실수를 저지른 것 같습니다. Closecursor는 내가 그것을 추가 할 때 아무 것도하지 않는 것 같았습니다.

+0

PDO가 [오류시 예외 발생] (http://us.php.net/manual/en/pdo.error-handling.php#example-978)으로 구성되어 있는지 확인하면 어떤 내용인지 확인할 수 있습니다 잘못된. 당신이하고있는 일에 대해 생각해보십시오. 한 번만'execute'를 호출하기 때문에 * 최선을 다해서 * INSERT INTO Targets VALUES (..)를 한 번 실행하고 하나의 행을 삽입합니다. – DCoder

+0

입니다. 문제는 이것이 여러 가지 방법으로 당신을 쫓아 내려고 시도하는 처리 페이지에있는 것입니다. 오류를 보는 것이 그 자체로 어려운 문제입니다. 시각적으로 볼 수있는 간단한 코딩 오류가되기를 바랬습니다. 예. 실행 문제가 있다는 것을 알고 있습니다. 테스트를 진행하는 동안 처음 작업했는지 알지 못했습니다. – Rujikin

+1

그래서 문제는 코드를 디버깅하는 방법을 모른다는 것입니다. [xDebug] (http://xdebug.org/index.php)를 설치하고 코드를 한 줄씩 살펴보십시오. – DCoder

답변

0

당신은 많은 삽입을 실행해야하지만 어떤 이유로 당신은 을 실행하고 있다고 말했습니다.

또한

, 사용자 코드에서 이러한시켜 try..catch 일을 제거하십시오 - 당신이

+0

한 번 실행해도 얻을 수 없으므로 일단 쿼리를 제출하면 반복에 대해 걱정할 것입니다. 나는 stackoverflow에 많은 코드를 보았습니다. 실행을 포기하고 더 좋은 방법이 있습니까? 또한 코드에서 try-catch 블록을 제거했지만 아직 제출되는 것은 없습니다. – Rujikin

-2

내 페이지의 절반 기능 모델을 다시했지만, 내가 찾은 잘못 무슨 일이 일어나고 있는지 아무 생각이 왜이 이유 있습니다 문제는 lastinsertid()입니다. 나는 PDO 클래스에 PDOstatement 클래스를 적용하고 있었다.

전 :

$cpid = $cpinsert->lastInsertID(); 

후 :

$cpid = $db->lastInsertID(); 

난 그냥 대신 코드의 라인과 준비의 데이터베이스를 호출했다.