2012-07-02 7 views
0

다음은 prepare 문에서의 시도입니다. 그 순간에 페이지가 죽어 버려서 분명히 잘못된 것이 있습니다. 이PHP PDO 준비 문 업데이트

telephoneinsert($Ielector,$inputs,$outputs); 

$ 입력과 같은 페이지에서 호출하는 기능입니다

function telephoneinsert($elector,$inputs,$outputs){ 
      global $dbh; 
      $sql = "UPDATE electors SET $inputs WHERE ID=?"; 
      $q = $dbh->prepare($sql); 
      $q->execute(array($outputs,$elector)); 
      //UPDATE STATS 
     } 

는 경우이 name = ?, type =? 같은 모습에 공감하는 게시 된 배열을 =. 마지막 쉼표를 없애기 위해 고의로 rtrim'd되었습니다. 배열의 어떠한

$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
     print_r($dbh->errorInfo()); 
+0

error_reporting이 켜져 있습니까? PDO의 오류보고 모드가 올바르게 설정되어 있습니까? –

+0

나는 아무것도 보이지 않는 것처럼 그렇게 생각하지 않는다. $ this-> pdo-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING); \t \t print_r ($ dbh-> errorInfo()); –

답변

1

$outputs에는 쉼표로 구분 된 문자열이 포함되어 있지만 execute()에는 매개 변수가 배열의 요소로 전달되어야합니다. 따라서 문자열을 분리해야합니다.

$q->execute(explode(',', "$outputs,$elector")); 
0

을 보여주는 benjamin,socialist

오류보고와 같은

같은 원칙 $로 출력하는 경우 반향 외모는 여기에 당신이 개 요소

에서
$q->execute(array($outputs,$elector)); 

만 한 ?이 당신의 sql, 배열 요소의 수는 발생하는 순서대로 물음표의 수와 일치해야합니다.

+0

일치시킬 물음표가 두 개 이상 있습니다. 입력에는 여러 개의 물음표가 있습니다. $ inputs = 'name =?, type =?' –

+0

분명히 질문을 읽지 못한 상태에서 여기에 내 코드를 응답으로 제출했습니다. –

+0

@Robin Knight 사실,이 대답은 '1'이 '3'이되어야한다는 차이점과 함께 정확합니다 ... – jeroen