2019/2/18:php提取MySQL数据转化为json格式

写在前面

我的需求是,微信小程序访问网址发布页的php,php登陆数据库获取数据。但问题是服务器返回的data是字符串类型,不想做字符串处理,所以想把返回的data搞成json格式。

PHP

代码是模仿菜鸟教程上的“PHP 数据库”PHP 数据库教程写的。网页截图如下:
在这里插入图片描述
根据我的项目,写了如下的php:

<?php
$servername = "127.0.0.1:3306";
$username = $_GET['name'];//参数由微信小程序传入
$password = $_GET['password'];
$database = $_GET['database'];
$openid = $_GET['openid'];

// 创建连接
$conn = new mysqli($servername, $username, $password,$database);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);  
} 

// sql语句
$sql = "SELECT * FROM list WHERE openid='".$openid."'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {//$result->num_rows返回命中数目
    // 输出数据
    while($row = $result->fetch_assoc()) {
	echo json_encode($row);
    }
} else {
    echo "0 ";
}

$conn->close();

?>

其实上述json_encode()就可以将数组转换为json格式输出。假设单次echo的输出是{…},那么服务器响应返回给客户端的data即为{…},是json格式;,但多次echo后,响应的data为{…}{…}{…},data就以字符串的形式即"{…}{…}{…}“传给了客户端,如下图。(图没截完整,但可以看出不是json格式,是”{…}{…}{…}"的字符串)在这里插入图片描述
知道了问题所在,我的方案是:
1.先定义一个空数组:$row1=array();
2.每个循环内把 $row压入数组 $row1: array_push( $row1, $row[“code”]);
3.最后:echo json_encode( $row1);
改动的地方如下:

if ($result->num_rows > 0) {
    $row1=array();
    while($row = $result->fetch_assoc()) {
 		array_push($row1,$row);
    }
    echo json_encode($row1);
} else {
    echo "0 ";
}

理论上data就是[{…},{…},{…}]的形式。然后看小程序控制台输出的结果:
在这里插入图片描述
嘿嘿,就舒服了。其实很简单,但对没有PHP基础的我,从知道json_encode()这个函数到解决问题将近花了一个下午。

附上下午搜到的一些链接:
php Array:http://www.runoob.com/php/func-array.html
MySQLi 官方手册:http://php.net/manual/zh/book.mysqli.php

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值