2016-06-27 10 views
0

eine Funktion get_autocomplete in Modell suchenSpalte 'STUDENT_ID' in Feldliste ist nicht eindeutig

public function get_autocomplete() 
    { 
     $x = array(); 
     $search_data = "sah"; 
     $this->db->select('student_id,filename,random,type,mime'); 
     $this->db->from('uploads a'); 
     $this->db->or_like('filename',$search_data); 
     $this->db->or_like('random',$search_data); 
     $this->db->or_like('type',$search_data); 
     $this->db->or_like('mime',$search_data); 
     $this->db->join('student-record c', 'c.student_id=a.student_id', 'left'); 
     $this->db->like('name',$search_data); 
     $this->db->or_like('email',$search_data); 
     $this->db->or_like('phone',$search_data); 
     $res = $this->db->get(); 
    } 

aber ich bekomme Fehler haben, die

heißt

Fehlernummer: 1052

Spalte 'STUDENT_ID' in Feldliste ist mehrdeutig

SELECT student_id, filename, random, type, mime VON (uploads a) LINKE VERBINDUNG student-record c ON c. student_id = a. student_id WHERE filename LIKE '% SAH%' OR random LIKE '% SAH%' OR type LIKE '% SAH%' OR mime LIKE '% SAH%' UND name LIKE '% SAH%' OR email LIKE ‚% SAH% 'OR phone LIKE '% SAH%'

Dateiname: C: \ wamp \ www \ ededge2 \ system \ Datenbank \ DB_driver.php

Zeilennummer: 330

Helfen Sie mir zu erholen Dies.

+0

Sie haben den Aliasnamen 'a' für die Tabelle 'uploads' angegeben. Sie müssen also die Felder wie a.student_id, a.filename usw. darstellen.Dann versuchen Sie es erneut – Arun

+0

@Arun Ich habe versucht, aber ich bekomme gleichen Fehler –

Antwort

3

Das ist, weil sowohl die tables (Uploads, Student-Record) student_id Schlüssel drin haben.

Wenn Sie JOIN verwenden, stellen Sie sicher, dass Sie Alias ​​verwenden, um auf die bestimmte Spalte zuzugreifen, falls beide Tabellen ähnliche Spaltennamen haben.

So können Sie Ihre Abfrage wie folgt aktualisieren,

public function get_autocomplete() 
    { 
     $x = array(); 
     $search_data = "sah"; 
     $this->db->select('a.student_id,filename,random,type,mime'); 
     $this->db->from('uploads a'); 
     $this->db->or_like('filename',$search_data); 
     $this->db->or_like('random',$search_data); 
     $this->db->or_like('type',$search_data); 
     $this->db->or_like('mime',$search_data); 
     $this->db->join('student-record c', 'c.student_id=a.student_id', 'left'); 
     $this->db->like('name',$search_data); 
     $this->db->or_like('email',$search_data); 
     $this->db->or_like('phone',$search_data); 
     $res = $this->db->get(); 
    } 

Spalte ‚STUDENT_ID‘ in Feldliste ist nicht eindeutig,
Es bedeutet nicht, welche Spalte Wert weiß es zurückgeben muss, entweder von lädt oder Student-Datensatz.


Update:

$this->db->select('a.student_id,filename,random,type,mime,name,phone'); 
// add name and phone to get it in the result-set. 
+0

Fehler behoben ist, aber ich erhalte eine arrayArray ([0] => Array ([STUDENT_ID] => Stud-123 [Dateiname] => vid132323232323asasd [random] => skdjskdjskdj [typ] => video [mime] => mp4)) null –

+0

anstelle von Array ([0] => Array ([student_id] => stud-123 [filename] => vid132323232323asasd [zufällig] => skdjskdjskdj [typ] => video [mime] => mp4 [name] => sahad [phone] => 8561016654)) –

+0

Dann fügen Sie der select-Anweisung phone und name hinzu: '$ this-> db-> select ('a.student_id, dateiname , zufällig, Typ, Pantomime, Name, Telefon ') ' –

0

Dieses Problem trat auf, wenn die Verwendung gleichen Feldnamen zwei Tabelle, die wir sind join.To dieses Problem beheben Sie wie folgt verwenden sollten, wenn Daten „table_name bekommen. student_id as stu_id ". Ihr Problem wird gelöst und Sie greifen auf student_id von stu_id zu.

Verwandte Themen