シリアル化された配列で行を更新しようとしていますが、以下のSQL文を実行すると行が更新されません。シリアル化された配列でMYSQL行が更新されない
しかし、代わりに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();
}
}
エスケープdoubleqoutesを返し、試してみて、何デシベルすなわちVARのcharなどのcol1のフィールドのですか? –
Thx。テキストに設定されています – jsuissa
col1はどのように定義されていますか?それはCHARですか?もしそうなら、あなたの値がその列の最大長を超えていないことを確かめてください。 –