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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章