MYSQL行无法使用序列化数组进行更新

时间:2012-03-20 03:34:52

标签: php mysql codeigniter

我正在尝试使用序列化数组更新一行,但是当我运行下面的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 :(得分:0)

这条线很好。

如果您尝试将字段更新为其当前值(即您没有进行实际更改),那么您将获得0更新的行。

例如,如果我有员工表:

employees
id    name      city
1     John      London

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

// 0 rows affected

如果您没有进行实际更改,则返回0