DELIMITER $$ USE `dw`$$ DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$ CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`( in_JsonArray VARCHAR(4096),#JSON
数组字符串 in_Index TINYINT, #JSON对象序号,序号从1开始 in_KeyName VARCHAR(64)#键名 ) RETURNS VARCHAR(512) CHARSET utf8 BEGIN DECLARE vs_return VARCHAR(4096) DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096) #declare vs_Json varchar(4096) DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED #写监控日志 #insert into dw.t_etl_log(sp_name, title, description) #values('dw.fn_Json_getKeyValue', '通过Json键名取键值', concat('in_JsonArray=', in_JsonArray)) SET vs_JsonArray = TRIM(in_JsonArray) SET vs_KeyName = TRIM(in_KeyName) IF vs_JsonArray = '' OR vs_JsonArray IS NULL OR vs_KeyName = '' OR vs_KeyName IS NULL OR in_Index 0 THEN #如果键名存在 SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName) SET vi_pos2 = LOCATE(',', vs_json, vi_pos1) IF vi_pos2 = 0 THEN #最后一个元素没有','分隔符,也没有结束符'}' SET vi_pos2 = CHAR_LENGTH(vs_json) + 1 END IF SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', '') END IF END IF END IF RETURN(vs_return) END$$ DELIMITER 测试: {"old_current_score":"2","new_current_score":"0","old_grade_id":"1","new_grade_id":"1","grade_time":"2016-04-09 00:43:26","grade_upgrade_time":"2017-04-09 00:43:26"} select fn_Json_getKeyValue(reason,1,'old_grade_id')首先定义一个数组,然后
遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组
json_encode() 函数的功能是将数值转换成json数据存储格式。
例如:
<?php
//定义一个数组,用于保存读取到的数据
$array = array()
$query = mysql_query("select * from table")
//遍历数据表
while($rows = mysql_fetch_array($query)){
//可以直接把读取到的数据赋值给数组或者通过字段名的形式赋值也可以
$array[] = $rows
$array[$rows['id']] = $rows
}
print_r($array)
//最后通过json_encode()转化数组
echo json_encode($array)
?>
评论列表(0条)