2016-09-27 8 views
-2

Ich erhalteFehlernummer: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax. das Handbuch, die unter MySQL-Datenbank Fehlern

Error Number: 1064 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option, GROUP_CONCAT(DISTINCT year_question_map.year) AS years, GROUP_CONCAT(DIS' at line 1 

SELECT `questions`.*, `question_level`.*, `question_answer`.*, GROUP_CONCAT(DISTINCT question_option.question_option SEPARATOR '__') AS option, GROUP_CONCAT(DISTINCT year_question_map.year) AS years, GROUP_CONCAT(DISTINCT exams.exam_name) AS exams FROM `questions` LEFT JOIN `question_option` ON `question_option`.`question_id` = `questions`.`qid` LEFT JOIN `question_level` ON `question_level`.`level_id` = `questions`.`level_id` LEFT JOIN `question_answer` ON `question_answer`.`question_id` = `questions`.`qid` LEFT JOIN `year_question_map` ON `year_question_map`.`question_id` = `questions`.`qid` LEFT JOIN `exams` ON `exams`.`exam_id` = `year_question_map`.`exam_id` WHERE `questions`.`topic_id` = '1' GROUP BY `questions`.`qid` ORDER BY `qid` ASC
für die richtige Syntax zu Ihrer MySQL-Server-Version entspricht

I Codeigniter verwenden und hier ist meine SQL-Abfrage in meinem Modell

 $this->db->select("questions.*,question_level.*,question_answer.*,GROUP_CONCAT(DISTINCT question_option.question_option SEPARATOR '__') AS option,GROUP_CONCAT(DISTINCT year_question_map.year) AS years,GROUP_CONCAT(DISTINCT exams.exam_name) AS exams"); 
    $this->db->from('questions'); 
    $this->db->join('question_option','question_option.question_id = questions.qid','left'); 
    $this->db->join('question_level','question_level.level_id = questions.level_id','left'); 
    $this->db->join('question_answer','question_answer.question_id = questions.qid','left'); 
    $this->db->join('year_question_map','year_question_map.question_id = questions.qid','left'); 
    $this->db->join('exams','exams.exam_id = year_question_map.exam_id','left');  
    $this->db->where('questions.topic_id',$topicID); 
    $this->db->group_by('questions.qid'); 
    $this->db->order_by('qid','ASC'); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) { 
    return $query->result(); 
} else { 
     return FALSE; 
    } 
+0

'question_option.question_option' ?? oder 'question_option.OPTIONNAME' ?? – devpro

+0

Frage Frage Option – imZiaur

+0

vielleicht Fehler wegen der gleichen Tabelle und der gleichen Spalte Name .. – devpro

Antwort

1

Sie verwenden MYSQL Reserve Wort in Ihrer Anfrage:

GROUP_CONCAT(DISTINCT question_option.question_option SEPARATOR '__') AS OPTION, 

Hinweis Diese OPTION ist ein Reservewort, den Sie verwenden müssen, um einen Backtick zu verwenden oder ihn mit einem anderen Namen zu ändern.

Dies sollte sein:

GROUP_CONCAT(DISTINCT question_option.question_option SEPARATOR '__') AS `OPTION`, 

Als Referenz können Sie die Liste der Reserve Worte hier überprüfen: https://dev.mysql.com/doc/refman/5.5/en/keywords.html

(R) mit jedem Wort unter Bezugnahme gegeben in zeigt an, dass dies ein Reservewort ist.

+0

Danke @devpro für Hinweis auf den Fehler & für die Referenz jetzt es funktioniert wie Charme. Noch einmal vielen Dank – imZiaur

Verwandte Themen