2011-03-02 75 views
0

我想用事先準備好的聲明中插入和mysqli的更新數據,mysqli:爲插入和更新日期準備語句錯誤?

下面是我的database類,

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"; 
    } 
} 

它正常工作時,我有這樣一個正確的查詢,

$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!'; 

我應該在代碼,以便添加或更改它可以返回一個肯定的消息,當它沒事的時候返回負面的消息?

謝謝。

回答

0

您正在返回錯誤消息,未回顯它們。你要麼必須修改數據庫類使用echo而不是返回,或做

$ret_text = $mysqli->query_stmt(...); 
echo $ret_text; 
+0

瞭解它。謝謝。我愚蠢的錯誤...... – laukok 2011-03-02 19:35:47