CodeIgniter Active Record, базовое обновление дает ошибку - PullRequest
0 голосов
/ 15 сентября 2010

Я новичок в CodeIgniter и получаю ошибку, которую не могу понять.

Это код, который выдает ошибку:

$data = array('adr' => $address);

$this->db->where('id', $id);
$this->db->update('domains', $data);

Ошибка:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с ': //www.example.com WHERE id = "10" в строке 1

Это запрос:

UPDATE `domains` SET `adr` = http://www.example.com WHERE `id` = '10'

Если я изменю это на

UPDATE `domains` SET `adr` = 'http://www.example.com' WHERE `id` = '10'

это работает. Почему CodeIgniter создает этот ошибочный запрос?

Ответы [ 4 ]

0 голосов
/ 29 сентября 2010

Любопытно, посмотрите, работает ли он, когда вы экранируете строку, используйте $ this-> db-> escape ()

$data = array('adr' => $this->db->escape($address));
$this->db->where('id', $id);
$this->db->update('domains', $data);
0 голосов
/ 15 сентября 2010

Обычно CodeIgniter автоматически окружает значение $ address одинарной кавычкой.Я не знаю, почему вы получили это сообщение об ошибке?

0 голосов
/ 29 сентября 2010

У меня та же проблема, и codeigniter не добавляет одиночные кавычки к предложению where.

Когда вы вводите целочисленное значение, sql не выдает ошибку, но когда вы помещаете строковое значение (как переменную) в предложение where, оно выдает ошибку. Но когда вы добавляете одинарные кавычки к запросу и запускаете его на phpmyadmin, это работает.

Таким образом, решение добавляет оператор (string) к вашей переменной: как в этом (string)$id

Я писал ранее, чтобы добавить одинарные кавычки в переменную как '$ id', но это не сработает (я новичок в codeigniter & php, благодаря комментатору Митчеллу МакКенне, я проверил то, что написал раньше)

0 голосов
/ 15 сентября 2010

Попробуйте экранировать одинарные кавычки в переменной $address перед вызовом метода обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...