2016-10-27 1 views
0

Hallo alle zusammen bekomme ich die folgende Fehlermeldung, wenn ich meine Form für meine CI 3 Website einreichen:Aufruf einer Memberfunktion insert() bei null. Codeigniter

Fatal error: Call to a member function insert() on null

, die dieser Fehler auftritt, auf 20 Linie ist:

$query = $this->db->insert('temp_subscribed_users', $data); 

Hier ist die voll ist Funktion:

public function add_temp_user($key) 
{ 
    echo "hello"; 

    $data = array(


     'TEMP_EMAIL' => $this->input->post('email'), 

     'TEMP_KEY' => $key 

    ); 

    echo var_dump($data); 

    $query = $this->db->insert('temp_subscribed_users', $data); 

    if($query) 
    { 

     return true; 
    }else{ 

     return false; 

    } 
} 

Ich bin nicht sicher, was es durch Null bedeutet. Der Tabellenname ist korrekt und ich habe einen var_dump ausgeführt, um zu bestätigen, dass das Array gefüllt wird. Ich habe auch dafür gesorgt, dass ich in die Funktion komme, indem ich "hallo" ausspreche und es auf die Seite ausgibt.

Jede Hilfe ist dankbar, danke!

Zusätzliche Informationen: Ausführen mit XAMPP localhost.

+0

Sie vor dem Laden "db"? – Deep

+0

@Deep ja, ich habe es Autoloading der Datenbank-Bibliothek – Ddrossi93

+0

Sie können die Bibliothek auch manuell laden, bevor Sie die Einfügung ausführen. Sie können '$ this-> load-> library ('database');' verwenden –

Antwort

0

Nun, zunächst einmal verwenden Sie nicht das MVC-Modell von Codeigniter. Controller ist für Funktionen, Model ist für die Datenbankverbindungen.

Zuerst autoload Ihre Datenbank, wenn nicht nur in den Code. Aber so sollte es aussehen.

Controller-Funktion

public function add_temp_user($key) 
{ 
    echo "hello"; 
    $this->load->model('MY_MODEL'); 
    //If you're not autoloading db include the next line 
    //$this->load->library('database'); 
    $data = array(
     'TEMP_EMAIL' => $this->input->post('email'), 
     'TEMP_KEY' => $key 
    ); 

    echo var_dump($data); 
    //If you confirmed the data var dumped 

    $success = $this->MY_MODEL->insert_to_db($data); 

    if($success == true) 
    { 
     //Do something 
    } 
    else 
    { 
     //Do something 
    } 
} 

MODEL

public function insert_to_db($data) 
{ 
    $query = $this->db->insert('temp_subscribed_users', $data); 
    // 
    if($query) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
} 

Sicherstellen, dass die TEMP_EMAIL und TEMP_KEY die Spalten in Ihrer Datenbank sind und temp_subscribed_users ist Ihr Tabellenname

1

Last d atabase und dann Aufruf Funktion einfügen. Codeigniter lädt die Datenbank nicht automatisch für das Leistungsproblem.

$this->load->database(); 
$query = $this->db->insert('temp_subscribed_users', $data); 
Verwandte Themen