PHP连接MySQL数据库,输出json格式及编码问题
2017-03-07 本文已影响1313人
盖小同学
- 最近在学习php,昨天研究了一下通过php连接MySQL数据库,查询数据库内容并以json数据格式显示出来,很简单的几行代码。
- 因为用的php版本是php7,所以采用了mysqli来查询数据库,并没有用mysql,不过貌似好像差别不大。
- 补充:今天重新打开的时候访问user数据库的时候没问题,但是访问blog数据库的时候出现问题了,没有办法形成json数据,然后忙活了半小时之后排查出来了,用var_dump方法能够输出,不能输出json,而且输出的是乱码,所以问题就找到了,因为我的blog表中好多中文,所以出现了乱码,紧接着也就导致了无法形成json格式的数据。
解决办法也很简单:
$connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');
后面加上这样一句设置格式的就好了~
mysqli_query($connect,'set names utf8');
<?php
header ( "Content-type:text/html;charset=utf-8" );
//统一输出编码为utf-8
$connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');
$sql = "select * from user";
$result = mysqli_query($connect,$sql);
$arr = array();
while($row = mysqli_fetch_assoc($result)){
array_push($arr,$row);//往array数组中加入查询得到的数据
}
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
//json编码 JSON_UNESCAPED_UNICODE为防止中文乱码
?>
通过以上可以查询结果如图
2017-03-07 22-20-51屏幕截图.png因为刚刚开始学php,所以学的比较基础。想慢慢积累,所以开始试着写写博客记录一下。
- 另外mysqli_fetch_assoc和mysqli_fetch_array都可以实现查询数据库功能,不过区别在于前者不会显示索引后者会显示索引
不输出json格式数据的话,可以不用最后一行
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
直接输出数据
<?php
header ( "Content-type:text/html;charset=utf-8" );
//统一输出编码为utf-8
$connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');
$sql = "select * from user";
$result = mysqli_query($connect,$sql);
$arr = array();
while($row = mysqli_fetch_assoc($result)){
array_push($arr,$row);
}
foreach($arr as $single){
echo var_dump($single).'<br>';
}
?>