微信小程序PHP后端服务器数据库的连接处理

发布于 2019年06月29日 16:43:28 - 技术分享 - 微信小程序

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
      }
    })
  }

看一下结果已经出来了:

0e99a41a94a76ead88381cf9c7b89a44

但是,同时报错了,这就是坑之所在啊

e8f2e37f394069d260b2ab62c195de8d

报错的地方在哪里呢?

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格式
 
			}
?>

最后重启小程序,打印结果如下:

f3a395dcf1ba75e70333898e3bb282f2

这才是微信能读取的数据!这时再去 setData 就可成功了。


感谢:https://blog.csdn.net/LiXiuu/article/details/80207414

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 微信小程序PHP后端服务器数据库的连接处理 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常