2017-02-21 6 views
0

SQLクエリを実行してJSONを返してエラーを処理するために、 "universal"関数を記述しようとしています。そしてプロセス中に私が理解していないことがあります - なぜtry catchブロックはエラーを処理しません。 (後で私は論理を改善する - 疑問はそれについてではなく、純粋にエラー処理について)。ここでtry catchブロックのキャッチされていないエラー

は私のコードです:

私はこの関数を呼び出す方法
public 
function sqlToJSON($query, $type = array(), $params = array()) 
{ 
    try { 
     $data = array(); 
     $stmt = $this->mysqli->prepare($query); 
     if (count($type) > 0 && count($params) > 0) { 
      call_user_func_array(array($stmt, "bind_param"), array_merge(array($type), $params)); 
     } 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     while ($row = $result->fetch_assoc()) { 
      $data[] = $row; 
     } 
     $stmt->free_result(); 
     $stmt->close(); 
     return array('result' => 'success', 'error' => null, 'data' => $data); 
    } catch (Exception $e) { 
     $this->sqlError = 'Caught exception: ' . $e->getMessage(); 
     return array('result' => 'failed', 'error' => $e->getMessage(), 'data' => null); 
    } 
} 

$q = 'INSERT INTO receivers (receiver_name, owner) VALUES (UPPER(?), ?)'; 
    $params = array(&$receiverName, &$clientEmail); 
    $this->sqlToJSON($q, 'ss', $params); 

これは、次の期待エラー与える:

Uncaught Error: Call to a member function fetch_assoc() on boolean in ... 

を私は理解していない何この場合、catchブロックが実行されないのはなぜですか?

+2

これは例外ではありません!致命的なエラーです。 –

+0

@Ayaou、ありがとう。私はそれで働くことができます:私は私の質問を閉じるには? – lapkritinis

+0

それを簡単に削除! – rahulsm

答えて

関連する問題