2016-04-15 5 views
2

Ich benutze codeigniter Version 3.0.5 und ich möchte mysqli anstelle von mysql verwenden. Dafür habe ich $ db geändert ['default'] ['dbdriver'] = 'mysql' zu $ ​​db ['default'] ['dbdriver'] = 'mysqli' und var $ dbdriver = 'mysql' zu var $ dbdriver = 'mysqli' in system/database/DB_driver.php. Nun ist mein Code von Modell, Controller und Ansicht sind wie folgt aus:mit mysqli Treiber in ci

Mein Controller:

public function home() 
{ 
    $this->load->model('Destination_model'); 
    $data['main_content']="home_view"; 
    $data['values']=$this->Destination_model->getAllLocation(); 
    $this->load->view('include/template',$data); 
} 

mein Modell:

public function getAllLocation() 
{ 
    $query=$this->db->get('tbl_location'); 

    if($query->num_rows > 0) 
     { 
    return $query->result(); 
    } 
    return 0; 
} 

und jetzt meine Ansicht:

<h3 class="search-head">Select list (select one)</h3></label> 
<?php 
     $extra='class="form-control border-radius"'; 
     echo form_error('source'); 

     $place=array(); 
     $place[]="Select"; 
    foreach($values as $val){ 
      $place[$val->place_id]=$val->place_name; 
    } 

    echo form_dropdown('source', $place, set_value('source'),$extra); 
?> 

I habe versucht, auf Werte von Modell zu laden in Combo zugreifen, aber es zeigt Fehler "Schweregrad: Warnung Nachricht: Invalid argument für foreach geliefert() Dateiname: views/home_view.php Line Number: 18 "

Was ist das Problem Kann jeder Körper helfen?

Antwort

2

Sie können nicht foreach auf einem Objekt ausgeführt werden, anstatt $query->result() der Verwendung versuchen, mit $query->result_array()

Modell:

public function getAllLocation() 
{ 
    $query=$this->db->get('tbl_location'); 

    if($query->num_rows() > 0) 
     { 
    return $query->result_array(); 
    } 
    return []; 
} 

Ausblick:

<h3 class="search-head">Select list (select one)</h3></label> 
<?php 
     $extra='class="form-control border-radius"'; 
     echo form_error('source'); 

     $place=array(); 
     $place[]="Select"; 
    foreach($values as $val){ 
      $place[$val['place_id']]=$val['place_name']; 
    } 

    echo form_dropdown('source', $place, set_value('source'),$extra); 
?> 
+0

können Sie den Code zeigen .i versuchte, wie Sie immer noch das gleiche Problem –

+0

ich meine Antwort bearbeitet haben, so können Sie versuchen, es leicht –

+0

Fehler ist weg, aber die Daten nicht geladen in Combo –

3

In Ihrem Modell Gebrauch $ query-> num_rows() anstelle von $ query-> num_rows und in Ihrer Ansicht Datei immer auf das Array vor foreach Schleife

überprüfen
if(is_array($values) && count($values)>0){ 
    foreach($values as $val){ 
      $place[$val->place_id]=$val->place_name; 
    } 
} 
+0

Sie Code auch funktioniert. –