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ブロックが実行されないのはなぜですか?
これは例外ではありません!致命的なエラーです。 –
@Ayaou、ありがとう。私はそれで働くことができます:私は私の質問を閉じるには? – lapkritinis
それを簡単に削除! – rahulsm