2017-02-21 1 views
0

Ich versuche, "universal" -Funktion zu schreiben, SQL-Abfrage auszuführen und JSON zurückzugeben und Fehler innerhalb zu behandeln. Und während des Prozesses gibt es etwas, das ich nicht verstehe - warum versuchen Sie, fangen Block nicht Fehler behandeln. (Später werde ich Logik verbessern - Frage ist nicht darüber, sondern rein auf Fehlerbehandlung).Uncaught Fehler in Versuch catch Block

Hier ist mein Code:

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

Wie ich diese Funktion aufrufen:

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

Dies gibt folgende erwartete Fehler:

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

Was ich nicht verstehe, Warum wird der catch-Block in diesem Fall nicht ausgeführt?

+2

Das ist keine Ausnahme!, Das ist ein schwerer Fehler, –

+0

@Ayaou, ok danke. Ich kann damit arbeiten :) Wie schließe ich meine Frage? – lapkritinis

+0

löschen Sie es, einfach! – rahulsm

Antwort

Verwandte Themen