Php 当我更新行中的json值时,Mysql行为空

Php 当我更新行中的json值时,Mysql行为空,php,mysql,wordpress,Php,Mysql,Wordpress,我正在尝试更新mysql中的json值。但我注意到它删除了行中的旧值 $image = $wpdb->get_var($wpdb->prepare("SELECT id FROM users WHERE ext = $user_id")); $where = array('custo' => $image); $dataOld = $wpdb->get_var($wpdb->prepare("SELECT custom FROM use

我正在尝试更新mysql中的json值。但我注意到它删除了行中的旧值

$image = $wpdb->get_var($wpdb->prepare("SELECT id FROM users WHERE ext = $user_id"));
$where = array('custo' => $image);
$dataOld = $wpdb->get_var($wpdb->prepare("SELECT custom FROM users1 WHERE ext1 = $where"));
$dataOld = json_decode($dataOld, true);
$dataOld["2"]["value"] = "four";
$dataOld = json_encode($dataOld);
$data  = array('customFields' => $dataOld);
$wpdb->update($wpdb->prefix . 'kings', $data, $where);
我在sql中有这样一个json:

{"1":{"label":"empo","value":""},"2":{"label":"Comp","value":"A"}}
它打印的不是更新“值”

{"2":{"value":"four"}}
我正在努力做到这一点:

{"1":{"label":"empo","value":""},"2":{"label":"Comp","value":"four"}}
更新:

$image = $wpdb->get_var($wpdb->prepare("SELECT id FROM users WHERE ext = $user_id"));
$where = array('custo' => $image);
$dataOld = $wpdb->get_var($wpdb->prepare("SELECT custom FROM users1 WHERE ext1 = (SELECT id FROM users WHERE ext = $user_id)"));
$dataOld = json_decode($dataOld, true);
$dataOld["2"]["value"] = "four";
$dataOld = json_encode($dataOld);
$data  = array('customFields' => $dataOld);
$wpdb->update($wpdb->prefix . 'kings', $data, $where);

我看不到您正在解码刚刚从数据库读取的JSON值?对不起,我漏了一行。代码现在已更新。现在你可以检查了。THXCan不能真正重现这种情况,您需要进行更多的调试,并找出它到底出了什么问题。在执行更新之前,是否对修改后的值进行了调试输出?然后应该是针对
$wpdb->get\u var($wpdb->prepare
,因为如果我不更新json,当行中有json时,json返回为空。您试图创建WHERE子句的方式是错误的,您无法将数组连接到字符串值中,这将在此时只会导致文本“array”。