我将一些用户首选项保存在 MySQL 的数组中。这就是我获取当前数组的方式:
$array = DB::queryFirstField("SELECT dashboard_array FROM compel_dashboard
WHERE user_id = %i", $user_id);
这给了我:
"s:19:"dashboard-reccomend";"
现在,如果我想向这个数组添加一个新字符串($dashboard_item
包含一个类似 dashboard-progress 的字符串),我在想:
$array[] = serialize($dashboard_item);
$query = DB::update('compel_dashboard', array(
'dashboard_array' => $array
), "user_id=%s", $user_id);
当我进行此调用时,它不会更新。该数组与我的第一次调用相同,没有添加任何内容。如果我只是更新 dashboard_array
字段而不尝试添加到数组,它会很好地替换值,所以我知道它是我在添加到数组时所做的事情。
最佳答案
这就是我为让它工作所做的。在添加到它之前,我必须反序列化数组。
$dashboard = DB::queryFirstField("SELECT dashboard_array FROM compel_dashboard
WHERE user_id = %i", $user_id);
$array[] = unserialize($dashboard);
array_push($array, $dashboard_item);
$new_dash = serialize($array);
$query = DB::update('compel_dashboard', array(
'dashboard_array' => $new_dash
), "user_id=%s", $user_id);
关于php - 添加到mysql数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376913/