如何在SQLite3中直接更新JSON字段添加新客户数据?
解决方案
要直接用SQLite语句完成JSON数组的追加,你需要使用SQLite 3.38.0及以上版本提供的JSON_ARRAY_APPEND和JSON_OBJECT函数,具体语句如下:
UPDATE your_table_name SET data = JSON_ARRAY_APPEND( data, '$.customers', JSON_OBJECT('name', ?, 'number', ?) ) WHERE id = 1;
说明:
JSON_ARRAY_APPEND(data, '$.customers', ...):指定在data列的customers数组末尾追加新元素JSON_OBJECT('name', ?, 'number', ?):构造新的客户JSON对象,用占位符?绑定变量,避免SQL注入风险WHERE id = 1:定位到需要更新的行(可根据实际需求调整条件)
结合PHP代码示例(适配你的变量):
如果你用PHP的SQLite3扩展,可以这样执行:
$db = new SQLite3('your_database.db'); $new_customer_name = "test3"; $new_customer_number = "3333"; $stmt = $db->prepare(" UPDATE your_table_name SET data = JSON_ARRAY_APPEND( data, '$.customers', JSON_OBJECT('name', :name, 'number', :number) ) WHERE id = 1 "); $stmt->bindValue(':name', $new_customer_name, SQLITE3_TEXT); $stmt->bindValue(':number', $new_customer_number, SQLITE3_INTEGER); // 若number为字符串类型,替换为SQLITE3_TEXT $stmt->execute();
执行后,id=1的data列会成功追加新客户对象,得到你想要的JSON结构。
内容的提问来源于stack exchange,提问作者alpha acem3
相关产品推荐
相关产品推荐

