2016-03-31 2 views
0

Ich möchte gerne Rückmeldung von $CI->db->insert(...) bekommen, sowohl bei Erfolg als auch bei Misserfolg.Codeigniter3: Wie bekomme ich Fehler oder Erfolgsinformationen von db-> einfügen?

Ich habe versucht, einfach die Rückkehr zu fangen und echo es und print_r es, aber keiner gibt mir etwas nützliches; Und ich habe versucht, $ CI-> db-> display_errors() (obwohl ich es tatsächlich nicht gefunden bei CI docs gelistet).

$return = $this->db->insert("some_table" , $table_data) ; 

print_r($return ) ; // 
// OR 
print ($this->db->display_errors()) ; 

Hat $CI->db->insert(...) bieten eine Möglichkeit, Erfolg/Misserfolg zu überprüfen?


UPDATES:

in CI3 ...

$this->db->_error_message() erzeugt einen Fehler: Fatal error: Call to undefined method CI_DB_mysqli_driver::_error_message()(mit oder ohne Unterstrich).

$this->db->display_errors() erzeugt einen Fehler: Fatal error: Call to undefined method CI_DB_mysqli_driver::display_errors()

$this->db->insert_id() erzeugt ein 0(unabhängig davon, ob der Einsatz erfolgreich war oder fehlgeschlagen)

+0

diese URL sehen: http://www.codeigniter.com/user_guide/database/queries.html#handling-errors –

+0

und auch das http://stackoverflow.com/questions/7843406/codeignit-how-to-catch-db-errors –

+0

benutze ich ($ this-> db -> _ error_message()) echo $ this-> db -> _ error_message (); – AldoZumaran

Antwort

0

Es gibt zwei Methoden, die mir geben sinnvolle Info, obwohl ich haven‘ t gesehen in der CI3-Dokumentation, dass die info ist definitive, so halte ich dies eine schwach-ish Lösung:


A ...

$return = $this->db->insert("some_table" , $lvl_data) kehrt ...

// on SUCCESS: 1 ......... which indicates the boolean TRUE, not the number 1 
// on FAILURE: nothing ... which indicates the boolean FALSe 

aber ich weiß nicht, von der Dokumentation, wenn diese endgültig immer gewährleistet ist.

Bitte beachten Sie: dies eine uncatch-able formatiert CI Fehlermeldung auf Ausfall erzeugen, es sei denn, Sie beeinflussen verwenden $ this-> db-> db_debug ... siehe Arbeitsbeispiel unten für den Einsatz.


B ...

$this->db->error() kehrt ...

// on SUCCESS: Array ([code] => 0 [message] =>) 
// on FAILURE: Array ([code] => 1054 [message] => Unknown column 'some_bad_column_name' in 'field list') 

Allerdings weiß ich nicht für bestimmte (basierend auf CI3 doc), dass [code]=>0 notwendigerweise success entspricht.


A + B, mit $ this-> db-> db_debug ...

So glaube ich, dass diese beiden Infos Kombination lose anzeigt:

$db_debug   = $this->db->db_debug ; //save setting 
$this->db->db_debug = FALSE    ; //disable debugging for queries 

$return = $this->db->insert("some_table" , $lvl_data) ; 
$error = $this->db->error()       ; 
if ($error['code'] === 0 && $return === true) 
    { // almost surely SUCCESS 
    } 

$this->db->db_debug = $db_debug   ; //set it back 
Verwandte Themen