MAMP PRO+Navicat Preminum+php 在mac上使用php连接数据库,并且搭建简单的注册功能

接上文https://www.cnblogs.com/0811thomas/p/15808152.html

先上自己连接成功的效果图

 

 

 

在安装了MAMP PRO以后,我们还需要安装Navicat Premunum,破解版的安装也在我上篇分享的地址,可以自行下载

 

 

 我这里使用的软件组合是MAMP PRO(php,apache,mysql集成环境,win上的phpstudy,xampp都是一样的道理)+ Navicat Preminum(Navicat 是以直觉化的图形用户界面而建的)+Mysql+php

首先我们先按照之前发的安装前面两个软件,无脑下一步即可,接下来我们安装mysql数据库

ps:这里我自己安装mysql以后配置环境变量的时候踩了很多坑

坑1:下载下来没有my.cnf 配置文件,于是自己百度了cnf文件加载了配置文件也不行

 

坑2:密码问题。5.7.22版本以前的是安装的时候不设置密码,现在都是最新的,安装的时候需要输入密码,也可以更改密码,可以命令行更改,新版的现在都是在启动口直接可以手动更改。

后来才发现是版本号的问题,最后百度了各种方法尝试,最终我自己的解决方法还是卸载重装,这个我们后面说,接下来重点来了(先装完前两个软件,当然也有代替的软件,根据自己的喜好来)

  首先安装mysql

 

   第一种 官网下载 ps 这里下载的时候一定要看清自己的mac的系统,m1芯片的是arm版本的,直接拉到最下面,选择社会版本进行安装,安装相对应的版本

可以参考此连接: https://blog.csdn.net/baidu_26315231/article/details/88963558

 

 

 第二种 附上我的云盘可以直接下载https://cloud.189.cn/web/share?code=3M3a2euuUJjy

 注意点:1、路径  路径 路径 这里要说三遍

跟mamp pro同理 找到安装路径,下图是我们的mysql安装路径,我安装的版本是8.0.26

 

 

 

 

 

 同时 我们的mamp pro的安装的路径是

 

 

 

 

我们的部署文件全都放在 MAMP 下的htdocs下运行  例如 先来测试数据库的连接是否成功,可以看到的部署目录下,有个测试文件,我们打开他

这里我在前文的基础上把端口号改回来了,因为中间也出现了一点问题,MAMP PRO的端口号和mac自带的apache段口号是冲突了

所以还是改成了8888

 

 

注意点2:  出现最多的错误就是配置问题,密码问题,比如

ps 出现2003 - Can't connect to MySQL server on '127.0.0.1' (61 "Connection refused") 如何解决

这里放出几位大神的解决地址,可以参考,我的解决办法就重装大法

没有配置文件可参考 https://blog.csdn.net/qq_42350785/article/details/104235585

解决密码验证问题可参考 https://www.cnblogs.com/zhengyan/p/13501694.html

那么就需要重新安装mysql,重装的时候一定要用命令行卸载,这样才能彻底清除配置文件,下面附上清除命令

第一步  关闭mysql服务:安装了mysql以后,会在系统偏好设置里可以直接打开

  

苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server)

如果不能关闭,则使用命令行强行关闭

~$ sudo /usr/local/mysql/support-files/mysql.server stop

第二步

1、进入终端输入:cd /usr/local/mysql/bin

2、车后 登录管理员权限 sudo su  (输入你电脑的密码)

注意这里进入了su模式,此时你是才能进行最高命令的操作权限

3、cd ~

接下来直接复制这几行命令

sudo rm /usr/local/mysql

sudo rm -rf /usr/local/mysql*

sudo rm -rf /Library/StartupItems/MySQLCOM

sudo rm -rf /Library/PreferencePanes/My*

vim /etc/hostconfig and removed the line MYSQLCOM=-YES-rm -rf ~/Library/PreferencePanes/My*

sudo rm -rf /Library/Receipts/mysql*

sudo rm -rf /Library/Receipts/MySQL*

sudo rm -rf /var/db/receipts/com.mysql.*

最后退出 此时就可以重装mysql了(记号你装的时候的密码)

装好以后如果你输入mysql的命令 mysql -V 

显示版本号正确就可以使用navicat 连接数据库

 

 

 关于navicat的操作,基本都是大同小异,不会的可以百度~~~

那么我们的完整步骤就是

1、打开MAMP PRO 开启服务

2、开启mysql

3、navicat连接数据库

4、php连接数据库

最后我放出在此配置下实现注册登陆的功能演示

首先我的文档目录(在部署目录/Applications/MAMP/htdocs 下进行 )

 

 

lineMysql.php 文件

<?php
class Mysql{
    private $host;
    private $root;
    private $passwords;
    private $database;

    #析构函数,具有构造函数的类,在创建对象时会调用构造函数,完成一些初始化的操作。
    function __construct($host,$root,$passwords,$database){
        $this->host = $host;        # $this-> 在类本身内部使用本类的属性或者方法
        $this->root = $root;
        $this->passwords = $passwords;
        $this->database = $database;
        $this->connect();
    }

    #连接数据库
    function connect(){
       $this->conn=mysqli_connect($this->host,$this->root,$this->passwords);    #连接数据库服务器
        mysqli_query($this->conn,"set names utf8");                            #设置字符集
        mysqli_select_db($this->conn,$this->database);                        #选择数据库
    }
    
    #创建查询结果集
    function query($sql){
        return mysqli_query($this->conn,$sql);
    }
    
    #返回结果集中的记录总数
    function rows($result){
        return mysqli_num_rows($result);
    }
    
      #自定义查询方法selectbyId
    function selectbyUser($local,$username){
        return $this->query("SELECT * FROM $local where username='$username'");
    }
    
    //自定义插入数据方法
    function insert($local,$username,$password){
        $this->query("INSERT INTO $local (username,password) VALUES ('$username','$password')");
    }

    #mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。
    function assoc($result){
        return mysqli_fetch_assoc($result);
    }

    #数据库关闭
    function dbClose(){
        mysqli_close($this->conn);
    }
}
$db = new Mysql("127.0.0.1","root","root811888","test");
?>

login.php 登陆页面

<form action="" method="post">
    <p>用户名:<input type="text" name="username" value=""></p>
    <p>密码:<input type="text" name="password" value=""></p>
    <input type="submit"  value="登录">
</form>
<a href="register.php">注册</a>

<?php
session_start();
require("lineMysql.php");

if(!empty($_POST['username'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    $select = $db->selectbyUser("user", $username);     # $db-> 调用实例化对象db中的方法
    $rows=$db->rows($select);       #返回的结果集记录总数 
    $assoc = $db->assoc($select);   #从结果集中取得一行作为关联数组

    if(empty($rows)){
        echo "<script>alert('该用户不存在!')</script>";
    }else{
        if($password==$assoc['password']){
            $_SESSION['username']=$username;
            header('Location:loginSuccess.php');
        }else{
            echo "<script>alert('密码错误!')</script>";
        }
    }
}
?>

loginSuccess.php

<?php
session_start();
if (isset($_SESSION['username'])) {
    echo '欢迎来到英雄联盟,'.$_SESSION["username"];
}
?>
<br>
<a href="login.php">注销</a>

register.php

<form action="" method="post">
    <p>用户名:<input type="text" name="username" value=""></p>
    <p>密码:<input type="text" name="password1" value=""></p>
    <p>确认密码:<input type="text" name="password2" value=""></p>
    <input type="submit"  value="注册">
</form>

<?php
session_start();
require("lineMysql.php");

if(!empty($_POST['username'])){
    $username = $_POST['username'];
    $password = $_POST['password1'];
    $select = $db->selectbyUser("user", $username);
    $rows=$db->rows($select);       #返回的结果集记录总数
    if(empty($rows)){
        if(!empty($_POST['password1'])){
            if($_POST['password1'] != $_POST['password2']){
                echo "<script>alert('两次输入密码不同!')</script>";
            }else{
                $db->insert("user","$username","$password");
                header('Location:siginSuccess.php');
            }
        }else{
            echo "<script>alert('请输入密码!')</script>";
        }
    }else{
        echo "<script>alert('该用户名已被注册!')</script>";
    }
}
?>

siginSuccess.php

注册成功!<a href="login.php">去登录</a>

 

 

到这里就就告一段落了,下篇文章会将更新完整后的购物车结合ajax,cookie等,继续加油!

posted @ 2022-01-18 20:04  thomas_001  阅读(306)  评论(0)    收藏  举报