PHP中把数据库查询结果输出为json格式
<?php
header("Content-type:text/html;charset=utf-8");//字符编码设置
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "tjks"; // 创建连接
$con =mysqli_connect($servername, $username, $password, $dbname); // 检测连接 $sql = "SELECT * FROM brands";
$result = mysqli_query($con,$sql);
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
} $jarr = array();
while ($rows=mysqli_fetch_array($result,MYSQL_ASSOC)){
$count=count($rows);//不能在循环语句中,由于每次删除 row数组长度都减小
for($i=0;$i<$count;$i++){
unset($rows[$i]);//删除冗余数据
}
array_push($jarr,$rows);
}
print_r($jarr);//查看数组
echo "<br/>"; echo '<hr>'; echo '编码后的json字符串:';
echo $str=json_encode($jarr);//将数组进行json编码
echo '<br>';
$arr=json_decode($str);//再进行json解码
echo '解码后的数组:';
print_r($arr);//打印解码后的数组,数据存储在对象数组中
mysqli_close($con);
?>
输出内容如下:
Array ( [id] => 1 [name] => GNC ) Array ( [id] => 2 [name] => TCBJ ) Array ( [id] => 3 [name] => TJKS )
Unicode编码后的json数据: [{"id":"1","name":"GNC"},{"id":"2","name":"TCBJ"},{"id":"3","name":"TJKS"}]
可以看到,直接进行json_encode();编码,是将三个数组分别转为了json格式,而且两端会出现中括号!!还有另外一种写法
<?php
header("Content-type:text/html;charset=utf-8");//字符编码设置
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "tjks"; // 创建连接
$con =mysqli_connect($servername, $username, $password, $dbname); // 检测连接 $sql = "SELECT * FROM brands";
$result = mysqli_query($con,$sql);
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
} $jarr = array();
while ($rows=mysqli_fetch_array($result,MYSQL_ASSOC)){
$count=count($rows);//不能在循环语句中,由于每次删除 row数组长度都减小
for($i=0;$i<$count;$i++){
unset($rows[$i]);//删除冗余数据
}
array_push($jarr,$rows);
}
print_r($jarr);//查看数组
echo "<br/>";
echo '<hr>'; $jobj=new stdclass();//实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_encode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach($jarr as $key=>$value){
$jobj->$key=$value;
}
echo '传递属性后的对象:';
print_r($jobj);//打印传递属性后的对象
echo '<br>';
echo '编码后的json字符串:'.json_encode($jobj).'<br>';//打印编码后的json字符串
mysqli_close($con);
?>
输出内容如下:
Array ( [0] => Array ( [id] => 1 [name] => GNC ) [1] => Array ( [id] => 2 [name] => TCBJ ) [2] => Array ( [id] => 3 [name] => TJKS ) )
传递属性后的对象:stdClass Object ( [0] => Array ( [id] => 1 [name] => GNC ) [1] => Array ( [id] => 2 [name] => TCBJ ) [2] => Array ( [id] => 3 [name] => TJKS ) )
编码后的json字符串:{"0":{"id":"1","name":"GNC"},"1":{"id":"2","name":"TCBJ"},"2":{"id":"3","name":"TJKS"}}
这样一来,中括号没有了,数组也成为了有序的数组!
PHP中把数据库查询结果输出为json格式的更多相关文章
- 读取mysql数据库的数据,转为json格式
# coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...
- CodeIgniter (CI)框架中的数据库查询汇总
引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...
- C++ OCCI API数据库操作之连接、返回查询结果集为json格式
使用C++操作数据库,转换返回结果集为json格式,易于解析. 以下程序的编译.运行环境:Windows 10 1803.VS2017 17.5.2(vc14).解决方案配置:Release.解决方案 ...
- PHP简单获取数据库查询结果并返回JSON
<?php header("Content-type:text/html;charset=utf-8"); //连接数据库 $con = mysql_connect(&quo ...
- 前端技术之:如何在控制台将JS class实例输出为JSON格式
有一个类: class Point { constructor(x, y) { this.x = x; this.y = y; } } 如果我们在控制台中输出其实例: console.log(new ...
- 网络传输中利用fastjson将复杂嵌套数据类型Json格式转换(GeoJsonPolygon)
如果一个对象太复杂了,那么在网络传输键的JSON格式数据转换容易出问题. 比如下面一个类Area.java import lombok.AllArgsConstructor; import lombo ...
- 获取一个表单字段中多条数据并转化为json格式
如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:1 ...
- 在thinkphp5.0中调用ajax时, 返回的JSON 格式数据在html前台不能用时
在thinkphp5.0中调用ajax时,如果控制器返回的数据为json格式,视图层接收到返回值即为json格式的数据,此时应该把 JSON 文本转换为 JavaScript 对象,方便调用.具体代码 ...
- 提取url中参数的方法(转换成json格式)
还是直接上代码吧. //将url中的参数获取到并抓换成json格式 function serilizeUrl(url){ var urlObject={}; //1.正则匹配是不是以?结尾 if(/\ ...
随机推荐
- update_notifier 造成nodejs进程数量增长的问题
最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异.并且单个nodejs进程所占用swap空间也较大,也不释放空间 ...
- THRDTERM-----干净地结束一个线程
THRDTERM产生两个线程.周期性地检查一个event对象.以决定要不要结束自己. #define WIN32_LEAN_AND_MEAN #include<stdio.h> #incl ...
- 关于form/input 的autocomplete="off"属性
转自:http://blog.sina.com.cn/s/blog_b49f96a701019m0d.html 一. 有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往input ...
- jsp 常用标签的使用
jsp中定义实体bean<jsp:useBean id="clu" class="cn.domain.CacluBean"></jsp:use ...
- Java项目打包发布
Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...
- codevs1519 过路费(最小生成树+LCA)
1519 过路费 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 在某个遥远的国家里,有 n个城市.编号为 1,2 ...
- (三)Appium-desktop 打包
appium-desktop经过二次开发后,需要打包为应用提供给其它同学使用.我们知道appium-desktop是使用electron来构建跨平台桌面应用程序.electron有electron-p ...
- Springboot 版本+ jdk 版本 + Maven 版本的对应关系
Spring boot 版本 Spring Framework jdk 版本 maven 版本 1.2.0 版本之前 6 3.0 1.2.0 4.1.3+ 6 3.2+ 1.2.1 4.1.3+ ...
- 使用node成功安装完某插件typescript后,在使用时提示:tsc(或xxx)不是内部或外部命令,也不是可运行的程序或批处理文件
具体出错情形: 使用npm安装typescript明明安装成功,但在使用时一直报错,报错语句为 tsc不是内部或外部命令,也不是可运行的程序或批处理文件 具体出错原因: node未正确安装,或相关环 ...
- POJ 1111(数字很吉利嘛) 简单BFS
Image Perimeters Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8594 Accepted: 5145 Desc ...