2013-03-25 2 views
0

Я пытаюсь выполнить обновление в моей базе данных. Одно из значений столбцов содержит апостроф и т.д. Я использовал $this->db->escape в CodeIgniter вокруг строк, которые могут содержать такие символы, но я все еще получаю следующее сообщение об ошибке:CodeIgniter - escaping SQL

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 'O\'Keeffe, O\'Keefe'' WHERE `survey_id` = 188' at line 1 

UPDATE `survey` SET `firstname_confidence_score` = 100, `firstname_rhymes` = '''', `lastname_confidence_score` = 85, `lastname_rhymes` = ''O\'Keeffe, O\'Keefe'' WHERE `survey_id` = 188; 

Как это исправить?

UPDATE:

$sql = "UPDATE `$table_name` SET `firstname_confidence_score` = $firstname_confidence_score, `firstname_rhymes` = '" . $this->db->escape($firstname_rhymes) . "', `lastname_confidence_score` = $lastname_confidence_score, `lastname_rhymes` = '" . $this->db->escape($lastname_rhymes) . "' WHERE `$primary_id` = $id;"; 
$result = $this->db->query($sql); 
+0

Он не должен удваивать кавычки, подобные этому .. как вы используете 'escape'? –

+0

Вы используете активную запись? Можете ли вы опубликовать фрагмент кода, создающий инструкцию SQL? –

+1

Обновлен мой вопрос. – StackOverflowNewbie

ответ

2

Поскольку вы используете $this->db->escape(), вы автоматически добавляете одинарные кавычки вокруг данных.

Вы запрос просто должен быть:

$sql = "UPDATE `$table_name` 
     SET `firstname_confidence_score` = $firstname_confidence_score, 
      `firstname_rhymes` = " . $this->db->escape($firstname_rhymes) . ", 
      `lastname_confidence_score` = $lastname_confidence_score, 
      `lastname_rhymes` = " . $this->db->escape($lastname_rhymes) . 
     "WHERE `$primary_id` = $id;"; 

Вам не нужны одиночные кавычки $this->db->escape($firstname_rhymes) и так далее.

+0

Yup, это сделал. Единственная цитата, окружающая строки, была из более ранней версии SQL до того, как я использовал $ this-> db-> escape. Благодаря! – StackOverflowNewbie

+0

Рад помочь, вам просто нужна дополнительная пара глаз. Всего наилучшего! –

1
UPDATE `survey` SET `firstname_confidence_score` = 100, `firstname_rhymes` = '''', `lastname_confidence_score` = 85, `lastname_rhymes` = 'O\'Keeffe, O\'Keefe' WHERE `survey_id` = 188; 

Вы были двойные apostraphes вокруг значения lastname_rhymes.

+0

Вы имеете в виду здесь: ''O \' Keeffe, O \ 'Keefe''? Я не вижу двойного. – StackOverflowNewbie