1. 程式人生 > >微信小程式之PHP後端伺服器資料庫的連線處理

微信小程式之PHP後端伺服器資料庫的連線處理

      弄個小程式真是腦殼疼,好不容易把前端弄好,把伺服器佈置好,但是如何連線後臺伺服器和資料庫實現資料互動呢?網上搜到的部落格教程真是夠亂的,對於我這種後端技術小白一點都不友好!我摸索的好幾天,終於前端能讀取到伺服器的 mysql 資料庫,所以來這記錄下一些過程和坑,說不定能幫到無意看到這篇文章的朋友呢!

        PHP後端程式碼

        最開始是要能連線到伺服器上 MySQL 資料庫:(php檔案要放在指定目錄下,伺服器佈置測試的時候你應該知道在哪裡,這裡就不說了)

test.php檔案
<?php
	//$name=$_GET["name"];//接收引數
	$hostname_conn = "localhost";
	$database_conn = "xdq";//資料庫名
	$username_conn = "root";//使用者名稱
	$password_conn = "xxxxxx";//自己資料庫的密碼
	//連線MYSQL資料庫
	$conn = mysqli_connect($hostname_conn, $username_conn, $password_conn,$database_conn)or trigger_error(mysqli_error(),E_USER_ERROR);
  ?>

        連線上後對資料的操作(先把資料庫上的一個表 article 輸出來看一下是否成功)

$sql = "SELECT *FROM article";
 	mysqli_query($conn, "set names 'utf8'");//不寫這句有可能亂碼
	$result = mysqli_query($conn, $sql);
	if (mysqli_num_rows($result) > 0) {
		while($row = mysqli_fetch_assoc($result)) {
			echo json_encode($row,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);//將請求結果轉換為json格式,微信只能對
json格式的資料進行操作
}}

        微信小程式這邊

        使用 wx.request 方法對自己的伺服器發起網路連線請求,此方法寫在 onLoad:function() 裡面,當小程式啟動時自動請求連線

index.js檔案
  onLoad: function (e) {
    var that = this;
    wx.request({
      url: 'https://www.xxxx.top/test.php',//此處填寫你後臺請求地址
      method: 'GET',
      header: {'Content-Type': 'application/json' },
      data: {},
      success: function (res) {
        // success
        console.log(res.data);//列印請求返回的結果
        that.setData({ item_list: res.data})

      },
      fail: function (res) {
        // fail
      },
      complete: function (res) {
        // complete
      }
    })
  }

看一下結果已經出來了:


        但是,同時報錯了,這就是坑之所在啊


        報錯的地方在哪裡呢?

        在這裡!!!

 that.setData({ item_list: res.data})

    item_list 是我在 data 裡面定義的一個數組,格式是這樣的

item_list: [
      { 
        article_title:"這裡是標題,唉,好長啊啊啊", 
        article_content: "這裡是內容這裡是內容這裡是內容這裡是內容這裡是內容",
        author:"匿名哈哈哈哈",
        article_time: "2018/4/12 14:25:43",
        like_num:999,
        favor_img: "../../image/favor.png",
        show: false
      },
      {
        article_title: "這裡是標題2",
        article_content: "這裡是內容這裡是內容這裡是內裡",
        author: "匿名",
        article_time: "2018-4-12 14:25:43",
        like_num: 0,
        favor_img: "../../image/favor.png",
        show: false
      },
    ] 

        原來是因為從伺服器返回結果還不是微信能讀取json樣式,必須要處理一下才能 setData (這可是我查了好多資料才知道的,尷尬!!)

那就在php後端修改為能微信能讀取的陣列,完整程式碼如下(背景深色為修改部分):

test.php
<?php
	//$name=$_GET["name"];//接收引數
	$hostname_conn = "localhost";
	$database_conn = "xdq";//自己建資料庫名
	$username_conn = "root";
	$password_conn = "xxxxxx";
	//連線MYSQL資料庫
	$conn = mysqli_connect($hostname_conn, $username_conn, $password_conn,$database_conn)or trigger_error(mysqli_error(),E_USER_ERROR);
	if(!$conn){
		
		echo "連線不成功!";	
	}
	$sql = "SELECT *FROM article";
 	mysqli_query($conn, "set names 'utf8'");
	$result = mysqli_query($conn, $sql);
	class Article{
	
		public $article_title;
		public $article_content;
		public $article_time;
		public $author;
		public $like_num;
		public $anouymous;
		public $article_label;
	
	}
	$data = array();
	if (mysqli_num_rows($result) > 0) {
		while($row = mysqli_fetch_assoc($result)) {
			$article=new Article();
			$article->article_title=$row["article_title"];
			$article->article_content=$row["article_content"];
			$article->article_time=$row["article_time"];
			$article->author=$row["author"];
			$article->like_num=$row["like_num"];
			$article->anouymous=$row["anouymous"];
			$article->article_label=$row["article_label"];
			
			$data[] = $article;
			
			}
			echo json_encode($data,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);//將請求結果轉換為json格式

			}
  ?>

最後重啟小程式,列印結果如下:


這才是微信能讀取的資料!這時再去 setData 就可成功了。

整體來看,其實也不難,但是對一個小白來說無從下手,並且到處去查閱資料還找不到就是真的很煩了。

最後,我趟過的坑希望你們能順利跳過!!!有錯誤請指正!