2011-03-02 6 views
0
내가 삽입하고 mysqli에서 데이터를 업데이트 할 준비가 문을 사용하려면

, 나는이 같은 올바른 쿼리가있을 때 그것은 잘 작동mysqli : 삽입 및 업데이트 날짜에 대한 준비 문 오류?

class database extends mysqli 
{ 
    ... 

    # insert and update data 
    public function query_stmt($sql,$types = null,$params = null) 
    { 
     # create a prepared statement 
     $stmt = parent::prepare($sql); 

     if($stmt) 
     { 
      # bind parameters dynamically for markers 
      if($types&&$params) 
      { 
       $bind_names[] = $types; 
       for ($i=0; $i<count($params);$i++) 
       { 
        $bind_name = 'bind' . $i; 
        $$bind_name = $params[$i]; 
        $bind_names[] = &$$bind_name; 
       } 
       $return = call_user_func_array(array($stmt,'bind_param'),$bind_names); 
      } 

      # execute query 
      $result = $stmt->execute(); 

      if($result) return 'success!'; 
       else return 'failed!'; 

      # close statement 
      $stmt->close(); 

     } 

     else 
     { 
      return self::get_error(); 
     } 
    } 

    # display error 
    public function get_error() 
    { 
     if($this->errno || $this->error) 
     { 
      return sprintf("Error (%d): %s",$this->errno,$this->error); 
     } 
    } 

    public function __destruct() 
    { 
     parent::close(); 
     //echo "Destructor Called"; 
    } 
} 

다음

database 클래스는,

$sql = " 
    INSERT root_countries_cities_towns (
     tcc_names, 
     cny_numberic, 
     tcc_created 
    )VALUES(
     ?, 
     ?, 
     NOW() 
    )"; 

$mysqli->query_stmt($sql, 'ss',array('UK','004')); 

하지만 잘못된 검색어 (예 :

)가있는 경우 결과를 반환하고 싶습니다.
$sql = " 
     INSERT root_countries_cities_townx (
      tcc_names, 
      cny_numberic, 
      tcc_created 
     )VALUES(
      ?, 
      ?, 
      NOW() 
     )"; 

root_countries_cities_townx 테이블이 존재하지 않습니다. 따라서 query_stmt 메서드를 사용하여 이러한 유형의 오류 메시지를 브라우저에 반환하고 싶습니다. 하지만 내 방법은 그렇지 않습니다! 왜?

나는

# execute query 
$result = $stmt->execute(); 

if($result) return 'success!'; 
else return 'failed!'; 

나는 그래서 코드에서 무엇을 추가하거나 변경해야합니다, 그것은 확인을인지하지만, 전혀 아무것도 내 브라우저에 출력되지 않고 있는지 몇 가지 기본 단어를 반환하는 테스트하는 것을 시도했다 그것은 ok 일 때 긍정적 인 메시지를 반환 할 수 있고 ok가 아닌 경우 negative 메시지를 반환합니다.

감사합니다.

답변

0

오류 메시지를 표시하고 반향하지 않습니다. 반품 대신 echo을 사용하도록 DB 클래스를 수정하거나

+0

등이 있습니다. 고맙습니다. 내 어리석은 실수 ... – laukok