python操作⼩程序云端数据库_⼩程序直接连接数据
库?——没有这波操作的…...
据我所知,⼩程序是不能直接连接数据库进⾏数据操作的,这也是出于安全的考虑。
基本上都是先通过wx.request向服务器发起请求,再由服务端程序(如PHP)来对MySQL数据库进⾏数据操作。
其实,不⽌⼩程序,很多APP⼿机应⽤都是需要先通过向服务器提交请求,再由服务器后台程序来连接数据库进⾏CURD数据操作的。
下⾯着重讲解⼩程序通过wx.request向服务器发起请求与后台PHP交互进⾏数据库操作。
如何连接后台服务器和数据库实现数据交互呢?⽹上搜到的博客教程真是够乱的,对于我这种后端技术⼩⽩⼀点都不友好!我摸索的好⼏天,终于前端能读取到服务器的 mysql 数据库,所以来这记录下⼀些过程和坑,说不定能帮到⽆意看到这篇⽂章的朋友呢!
PHP后端代码
最开始是要能连接到服务器上 MySQL 数据库:(php⽂件要放在指定⽬录下,服务器布置测试的时候你应该知道在哪⾥,这⾥就不说了)
test.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格式,只能对
}
}
⼩程序这边
使⽤ wx.request ⽅法对⾃⼰的服务器发起⽹络连接请求,此⽅法写在 onLoad:function() ⾥⾯,当⼩程序启动时⾃动请求连接
index.js⽂件
onLoad: function (e) {
var that = this;
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后端修改为能能读取的数组,完整代码如下:
//$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 就可成功了。
整体来看,其实也不难,但是对⼀个⼩⽩来说⽆从下⼿,并且到处去查阅资料还不到就是真的很烦了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论