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等,继续加油!

浙公网安备 33010602011771号