如何用PHP向MySQL表的已有数组字段中追加值
向MySQL的JSON数组字段追加元素的正确方法
你当前的代码直接用新值覆盖了access字段的原有数组,所以无法实现追加效果。要给JSON格式的数组字段末尾添加元素,需要使用MySQL内置的JSON_ARRAY_APPEND()函数:
正确的SQL语句
UPDATE user SET access = JSON_ARRAY_APPEND(access, '$', '7') WHERE name = '$user';
JSON_ARRAY_APPEND参数说明:- 第一个参数
access:要操作的目标字段 - 第二个参数
'$':指定操作整个数组(JSON路径表达式) - 第三个参数
'7':要追加到数组末尾的元素
- 第一个参数
安全提示
你的代码存在SQL注入风险,建议使用预处理语句绑定参数,以避免安全问题。比如PHP中用PDO实现:
$id = '7'; $targetUser = '目标用户名'; $stmt = $pdo->prepare("UPDATE user SET access = JSON_ARRAY_APPEND(access, '$', ?) WHERE name = ?"); $stmt->execute([$id, $targetUser]);
前提确认
确保你的access字段类型为JSON(从你提供的截图来看,字段存储的是标准JSON数组,符合该类型要求)。
内容的提问来源于stack exchange,提问作者Tanvir
相关产品推荐
相关产品推荐

