微信小程序+nginx+php+mysql实现数据库管理【第四期】


写文章这事儿吧。。。写多了上瘾,一直不写又容易懈怠hhh
目标是暑假把几个系列都更完( 很大的🚩

前情回顾

【第3期】php代码公布

先画个🍪

前三期已经解决了本地部署数据库以及与小程序连接的问题,现在将工作重心转移到云服务器
在这里插入图片描述

上图是本地与云服务器实现这个目标的步骤
因此主要区别在于第二步,准确的说是第二步中nginx的配置文件的填写(与【第零期】获取openid步骤几乎一致)


1.搭建数据库

参考第一期

微信小程序+nginx+php+mysql实现数据库管理【第一期】数据库与php的正确连接
https://blog.csdn.net/weixin_51772802/article/details/124028064

来到Navicat
在这里插入图片描述
数据库叫bus 表叫user_info
图中的两个数据是之前测试php输进去的

2.部署php连接数据库

  • NGINX的conf文件配置

1.添加证书

若要通过域名访问,需要添加证书(一般平台都有介绍,能直接使用的
nginx的话 需要把.crt和.key放到相应的位置
nginx.conf部分代码

server {
    listen 80;
    listen 6034 ssl;  #自行设置开放的端口

    server_name 139.XXX.XXX.67 www.XXXX.cn XXXX.cn; # 我的域名

    # ssl on;

    ssl_certificate /usr/local/nginx/cert/server.crt;

    ssl_certificate_key /usr/local/nginx/cert/server.key;

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    ssl_prefer_server_ciphers on;

    location /  {
    ……
2.添加路径

第二个location的匹配方式是正则表达式,只有在index内的文件才可以被访问
nginx.conf部分代码

    location /  {
                     root /var/www/html; #站点目录
                     index index.html index.htm;
    }


    location ~ \.php$ {
            root          /var/www/html/hitsz;  # 项目的根目录
            fastcgi_pass   127.0.0.1:9000;  # 应该是随便选,如果用socket通信就不行不知为何
            #fastcgi_index  DIR/test.php;  # 注释本行和注释下面的index效果是一样的
            index          delete.php find.php read.php update.php write.php testphp.php connect.php;  # 这里的路径是在root下的相对路径
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  # 照抄
            include        /usr/local/nginx/conf/fastcgi.conf;  # 若不在(通常都不在)nginx安装文件内, 需要通过绝对路径include到安装的nginx里
        }

启动NGINX

nginx -c 【conf的绝对路径】 -s reload

验证效果

验证A

输入以下端口/对应路径,出现以下效果
testphp.php

<?php
echo "Hello World!";
phpinfo();
// return "Hello"; 
?>

在这里插入图片描述

验证B

与验证A同理,试试数据库能不能用;可以试一试write.php
在这里插入图片描述
附代码(与第三期几乎一致)
connect.php

<?php
header("Content-type: text/html; charset=utf8");
//1. 声明字符编码

$host='139.XXX.XXX.67';//数据库ip
// $host='localhost';//数据库ip

$user='root';//用户名

$password='XXXX';//密码

$dbName='bus';//要连接的数据库名

$my_table='user_info';//数据库中的表格

$con = new mysqli($host,$user,$password,$dbName,3306);//数据库连接
// $con = new PDO("mysql:host=$host; dbname=$dbName; port=3306", $user,$password); 
// 其实其实PDO应该也是能用的,delete和增加数据也能实现但不知为何无法获得mysql处的返回值,所以查找数据等无法收到结果
// new

if ($con->connect_error) {
  print_r("FAIL");
  echo "系统异常,连接数据库失败:", $con->connect_error;
}
else
{
   print_r("SUCCESS");
   echo "连接成功</br>";

   $use_table="use $dbName;";
   //  echo $sql;
   $res_table=$con->query($use_table);
   if(!$res_table) echo "进入数据库时出错";
   else echo "成功进入数据库";
}
?>

注意⚠️

如果connect.phpPDO建立连接而不是new mysqli(new 也必不可少),read.php等无法获得mysql的返回值,这里卡了好久。。。。
write.php

<?php
header("Content-type: text/html; charset=utf8");
include 'connect.php';//调用connect.php文件
//$my_table='user_info';

$open_id=$_GET['open_id'];
$nick_name=$_GET['nick_name'];
$university=$_GET['university'];
$hobby=$_GET['hobby'];
$gender=$_GET['gender'];

if ($con->connect_error) {
        die("连接失败:".$con->connect_error);
}
else
{
        $sql="INSERT INTO $my_table(open_id, nick_name, university, hobby, gender) VALUES ('$open_id', '$nick_name', $university, '$hobby', $gender);";
        // echo $sql;  // debug用
        $res=$con->query($sql);
        // $res = mysqli_query($con, $sql);
        if($res){
            $arr['status'] = 1;
            $arr['info'] = 'success';
        }else{
            $arr['status'] = 0;
            $arr['info'] = 'error';
        }
        echo json_encode($arr['status']);
        // echo json_encode($arr['status']);
        // echo json_encode($res);
        die;
}
//http://localhost/test/write.php?open_id=aa&nick_name=d&university=3&hobby=dd&gender=1 前端界面debug
?>

可以看到,数据库里也多了一串数据
在这里插入图片描述

3.小程序与php的通道

将之前的小程序中.js文件的url从本地改到对应的路径下即可~

参考链接

微信小程序获取openid【非云开发版】【第零期】
https://blog.csdn.net/weixin_51772802/article/details/124023354


微信小程序+nginx+php+mysql实现数据库管理【第二期】小程序端的操作
https://blog.csdn.net/weixin_51772802/article/details/124041102

经验总结

学会看日志,debug才能更有效
有的时候,.php文件无法正常运行,是因为php没有安装对应扩展
比如在第三步遇到过这样的错误:获取open_id的php文件打不开了,看完日志发现
Call to undefined function curl_init()
应该是没有下载curl扩展
输入php -m看了一眼 发现真的没有curl

查看nginx错误日志

vim /usr/local/nginx/logs/error.log

遇到的错误

PHP安装扩展

参考链接

linux安装php及php扩展

https://blog.csdn.net/weixin_43247563/article/details/105506035?ops_request_misc=&request_id=&biz_id=102&utm_term=linuxphp%E5%8F%8A%E5%85%B6%E6%8B%93%E5%B1%95%E5%AE%89%E8%A3%85&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-105506035.142v17rank_v32,157v15new_3&spm=1018.2226.3001.4187

缺了个curl扩展,弄了一下午,下面以curl为例讲讲安装php扩展

1. 自己下载一个curl

下载方法参考链接

Linux安装PHP curl拓展

https://blog.csdn.net/mxdzchallpp/article/details/83624016?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165709165616781432922958%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165709165616781432922958&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-83624016-null-null.142v31experiment_2_v1,185v2control&utm_term=linux%E4%B8%8Bphp%E5%AE%89%E8%A3%85curl%E6%89%A9%E5%B1%95&spm=1018.2226.3001.4187

只使用了上面的“1.安装curl”步骤

2. 然后稍微修改了上文“下载PHP源码”编译安装时安装的库

相当于重新安装一遍php(包括make && make install

也可能只用make就行 不清楚🍃

修改过程如下图 在这里插入图片描述
但是这个时候还没有下载好curl,看一眼phpinfo(用上面那个testphp.php)
在这里插入图片描述
下载好的
若没有粗体居中的curl,说明curl没有下载好

3.从php源码包中安装扩展

参考《Linux安装PHP curl拓展》这篇文章

软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip软件工程实践案例分析+报告(微信小程序+mysql数据库+web后台管理).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值