Строка MYSQL не обновляется с помощью сериализованного массива - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь обновить строку с помощью сериализованного массива, но строка не обновляется, когда я запускаю приведенный ниже оператор SQL.

Однако, когда я просто использую слово типа TEST, вместо этого оно обновляется.

Любая помощь по устранению этой ошибки будет принята с благодарностью.

Возвращает 0 затронутых строк:

UPDATE lists SET col1 = 'a:9:{i:0;s:7:"English";i:1;s:7:"Spanish";i:2;s:6:"Korean";i:3;s:4:"Thai";i:4;s:0:"";i:5;s:0:"";i:6;s:0:"";i:7;s:0:"";i:8;s:0:"";}' WHERE list_id =  '6'

Правильно обновляет строку:

UPDATE lists SET col1 = 'TEST' WHERE list_id =  '6'

Нижетакое функция Codeigniter PHP:

public function update_field($table, $field, $value, $whereField = FALSE, $whereValue = FALSE )
{

$user_id = $this->session->userdata('user_id');
if ($whereField === FALSE) {
$sql = "UPDATE $table SET $field = '$value'";
$query =  $this->db->query($sql);
} else {

    $data = array(
        $field => $value
    );

    $this->db->where($whereField, $whereValue);
    $this->db->update($table, $data);

}

if ($this->db->_error_message()) {

    echo 'Error Num: ' . $this->db->_error_number();  //returns 0 if query successful/no error
    echo '<br />Message: ' . $this->db->_error_message(); 
}

}

1 Ответ

0 голосов
/ 20 марта 2012

со строкой все в порядке.

Если вы попытаетесь обновить поле до его текущего значения (т.е. вы не внесете никаких изменений), вы получите 0 обновленных строк.

напримересли у меня есть таблица сотрудников:

employees
id    name      city
1     John      London

UPDATE `employees` SET `city` = "London" WHERE `id` = 1

// 0 rows affected

, если вы не вносите никаких изменений, она возвращает 0

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