2013-08-22 2 views
1

У меня есть SQL-файл я пытаюсь импортировать в мой CodeIgniter приложение со следующим методом:Codeigniter: точка с запятой нарушения запрос

public function run_backup($filename) // full extension please 
    { 
     // read the file in 
     // make sure that filename is a string 
     $filename = (string) $filename; 

     $backup = $this->load->file($filename, true); 

     $file_array = explode(';', $backup); // explode on semicolon 
     foreach($file_array as $query) 
     { 
      $this->db->query("SET FOREIGN_KEY_CHECKS = 0"); 
      $this->db->query($query); 
      $this->db->query("SET FOREIGN_KEY_CHECKS = 1"); 
     } 
} 

Я получаю следующее сообщение об ошибке примерно на полпути через файл SQL:

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 ''Mistakes with high risk medicines are much more common than with any other medi' at line 1 

INSERT INTO quiz_question_content (`quiz_question_content_id`, `quiz_question_id`, `content`, `image_path`, `type`) VALUES (247, 235, 'Mistakes with high risk medicines are much more common than with any other medicines used 

Я искал линию и обнаружил, что существует точка с запятой в текстовом поле:

'Mistakes with high risk medicines are much more common than with any other medicines used; hence the reason they require special safeguards' 

Точка с запятой завершает линию и создает неверный запрос, поскольку мой метод разбивается на ';'

Есть ли в любом случае я могу игнорировать эту точку с запятой? Даже скелетная точка с запятой имеет точку с запятой &#59; Файл sql довольно велик, и человек помещает незакрашенные символы в текстовые поля. Любая помощь по этому вопросу была бы замечательной.

+0

А что, если вы должны были использовать '\'; чтобы попытаться избежать его? –

+0

Это файл sql, с которым я работаю, и указанный выше метод выполняет каждую строку, 'mysql_real_escape_string' будет избегать всей строки .., которая не будет работать. Вы правы, хотя мне нужно избежать этого раздела в строке. –

+1

Покажите нам полную декларацию php запроса INSERT –

ответ