1.可视化工具
① PHPmyadmin
在Xampp环境下的访问地址:
http://127.0.0.1(:端口号)/phpmyadmin 或者
http://localhost(:端口号)/phpmyadmin 端口号为“80”时可不加端口号。
② Navicat for MySQL
需要单独下载安装。
说明:
这两个工具都仅是对数据库进行操作和管理的工具,并不是数据库。
③ PHPmyadmin登录报错

安装的“XAMPP Control Panel v3.2.4”默认的 MySQL Port是3396,
在“Config->my.ini”配置文件中将所有的“3396”端口号替换为“3306”后,重启MySQL,打开phpmyadmin连接成功!
2.PHP中数据库操作
① PHP创建数据库(连接)
语法:(Object)mysqli_connect("域名","DB账号","DB密码","DB库名");
示例:$DBcnt = mysqli_connect('localhost','admin','111','DBtest');
② 向DB中插入数据时包含中文出现乱码的解决方案
语法:mysqli_query($DBcnt,'set names utf8');
说明:设置成功会返回1,根据实际情况并不一定必须保存返回结果。
③ 设置 client端和 server端保持字符编码一致
语法:mysqli_query($DBcnt,"set character_set_client=utf8");
mysqli_query($DBcnt,"set character_set_results=utf8");
④ 执行SQL语句
语法:$结果 = $DB连接->query(SQL语句);
示例:var_dump($result=$DBcnt->query($sql));
3.PHP操作SQL语句
⑴ PHP中使用SQL语句的基础模板(适用于初学理解)
① 建立数据库连接
② 判断是否连接成功
③ 设置编码
④ 创建SQL语句
⑤ 执行SQL语句,并获取结果
⑥ 判断结果条数
⑦ 拼凑结果
⑧ json格式返回
代码示例:
- <?php
- $dataCon = mysqli_connect('localhost','root','','dbtest'); //① 建立数据库连接
- if($dataCon){ //② 判断是否连接成功
- mysqli_query($dataCon,'set names utf8');
- mysqli_query($dataCon,'set character_set_client=utf8');
- mysqli_query($dataCon,'set character_set_results=utf8'); //③ 设置编码格式
-
- $sqlCode = '需要执行的SQL语句'; //④ 创建SQL语句
- $result = $dataCon -> query($sqlCode); //⑤ 执行SQL语句,并获取结果
- print_r($result);
- if($result -> num_rows>0){ //⑥ 判断结果条数,使用“num_rows”属性,表示表数据的行数
- $resContent=[];
- for($i=0;$row=$result -> fetch_assoc();$i++){ //“fetch_assoc()”方法用于获取对象中的每一条数据
- $resContent[$i] = $row; //⑦ 拼凑结果
- }
- print_r($resContent);
- echo json_encode($resContent); //⑧ json格式返回
- }
- }else{
- echo '数据库连接失败!';
- }
- ?>
⑵ SQL查询语句
在数据库的指定表内根据条件查询指定内容
语法:$sql = "select [字段内容] from [表名] where [查询条件]";
说明:
字段内容可以使用“ * ”代替,表示所有字段信息;也可以指定具体字段,多个字段用“,”隔开。
插叙条件可以直接写“1”,表示无条件;也可以写具体条件,多个条件使用“and”或“or”连接。
⑶ SQL插入语句
语法:$sql = "insert into [表名](field1,field2,...) values('value1,value2,...)";
$sql = "insert into [表名] values('value1,value2,...)"; //不定义字段条件时表示添加所有字段!
⑷ SQL修改语句
语法:$sql = "update [表名] set field1='value1,... where id=$id...";
注意:where后面的条件可以和修改的内容相同。
⑸ SQL删除语句
语法:$sql = "delete from [表名] where 条件";
说明:根据指定的条件删除对应的数据。
代码示例:
- <?php
- echo '<pre>';
- $dataCon = mysqli_connect('localhost','root','','dbtest');
- if($dataCon){
- mysqli_query($dataCon,'set names utf8');
- mysqli_query($dataCon,'set character_set_client=utf8');
- mysqli_query($dataCon,'set character_set_results=utf8');
-
- $sqlCode1 = 'select * from namelist where 1'; //查询数据库表数据
- $sqlCode2 = "insert into namelist(姓名,sex,age) values('Kandy','girl',20)"; //新增数据库表数据,指定字段
- $sqlCode3 = "insert into namelist values('Joe','boy',21)"; //新增数据库表数据,全字段
- $sqlCode4 = "update namelist set 姓名='George',age=22 where 姓名='joe'"; //修改数据库表数据
- $sqlCode5 = "delete from namelist where 姓名='joney'"; //删除数据库表数据
-
- $result = $dataCon -> query($sqlCode5);
- var_dump($result);
- }else{
- echo '数据库连接失败!';
- }
- ?>
4.用户登录注册案例
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Test</title>
- <script src="JScodeFile/jquery-1.8.3.js"></script>
- </head>
- <body>
- <span>Name:</span><input type="text" class="userName"><br>
- <span>Code:</span><input type="password" class="userCode">
- <br>
- <br>
- <button>用户登录</button>
- <button>用户注册</button>
- <script>
- var $btns = $('button');
- $btns.eq(0).click(function () {
- $.ajax({
- type:'post',
- url:'20210106Login.php',
- data:{
- myName:$('.userName').val(),
- myCode:$('.userCode').val()
- },
- dataType:'json',
- success:function (fBack) {
- console.log(fBack);
- if (fBack.result==1){
- alert('登录成功!')
- }else if (fBack.result==0){
- alert('用户不存在!')
- }else if (fBack.result==2){
- alert('登录密码错误!')
- }else{
- alert('网络连接失败!')
- }
- },
- })
- });
- $btns.eq(1).click(function () {
- $.ajax({
- type:'post',
- url:'20210108Register.php',
- data:{
- newName:$('.userName').val(),
- newCode:$('.userCode').val()
- },
- dataType:'json',
- success:function (fBack) {
- console.log(fBack);
- if (fBack.result==4){
- alert('用户名已存在,请修改用户名!')
- }else if (fBack.result==5){
- alert('用户注册成功!您的用户名是:'+$('.userName').val()+'密码是:'+$('.userCode').val())
- }else{
- alert('网络连接失败!')
- }
- },
- })
- });
- </script>
- </body>
- </html>
- <?php
- // 接受前台发送的数据
- $userName = $_POST['myName'];
- $userCode = $_POST['myCode'];
- // 定义需要返回给前台的数据对象
- $fBack = array();
- // 连接数据库,并定义数据库对象
- $dataCon = mysqli_connect('localhost','root','','dbtest');
- // 设置数据库辅助信息(编码格式)
- mysqli_query($dataCon,'set names utf8');
- mysqli_query($dataCon,'set character_set_client=utf8');
- mysqli_query($dataCon,'set character_set_results=utf8');
-
- // 用户登录逻辑
- if($dataCon){
- // 查询数据库表数据
- $sqlCode = 'select * from namelist where 1';
- // 执行SQL语句,定义SQL结果对象
- $result = $dataCon -> query($sqlCode);
- // 判断查询结果是否存在
- if($result->num_rows>0){
- // 数据结果存在,则将SQL结果对象解析为数组形式
- $resContent=[];
- for($i=0;$row=$result->fetch_assoc();$i++){
- $resContent[$i] = $row;
- }
- $fBack['resArr'] = $resContent;
- $fBack['resLen'] = count ($resContent);
- // 判断用户名是否存在,使用“count()”方法判断数组长度
- for($j=0;$j<count($resContent);$j++){
- if($resContent[$j]['name']==$userName){
- // 如果用户存在,则判断登录密码是否正确
- if($resContent[$j]['password']==$userCode){
- $fBack['result'] = 1;
- break;
- }else{
- $fBack['result'] = 2;
- }
- }else{
- $fBack['result'] = 0;
- }
- }
- }
- }else{
- $fBack['result'] = 3;
- }
- echo json_encode($fBack);
- ?>
- <?php
- $newName = $_POST['newName'];
- $newCode = $_POST['newCode'];
- // 连接数据库,并定义数据库对象
- $dataCon = mysqli_connect('localhost','root','','dbtest');
- // 设置数据库辅助信息(编码格式)
- mysqli_query($dataCon,'set names utf8');
- mysqli_query($dataCon,'set character_set_client=utf8');
- mysqli_query($dataCon,'set character_set_results=utf8');
- // 用户注册逻辑
- $fBack = array();
- if($dataCon){
- // 查询数据库表数据
- $sqlCode1 = 'select * from namelist where 1';
- // 执行SQL语句,定义SQL结果对象
- $result = $dataCon -> query($sqlCode1);
- // 判断查询结果是否存在
- if($result->num_rows>=0){
- // 数据结果存在,则将SQL结果对象解析为数组形式
- $resContent=[];
- for($i=0;$row=$result->fetch_assoc();$i++){
- $resContent[$i] = $row;
- }
- $fBack['resArr'] = $resContent;
- $fBack['resLen'] = count ($resContent);
- // 判断用户名是否存在,使用“count()”方法判断数组长度
- for($j=0;$j<count($resContent);$j++){
- if($resContent[$j]['name']==$newName){
- // 如果用户存在,则返回提示信息
- $fBack['result'] = 4;
- break;
- }else{
- $sqlCode2 = "insert into namelist(name,password) values($newName,$newCode)";
- $register = $dataCon->query($sqlCode2);
- $fBack['result'] = 5;
- $j = count($resContent)-1; //用于避免循环多次新增用户!
- $fBack['j'] = $j;
- }
- }
- }
- }else{
- $fBack['result'] = 3;
- }
- echo json_encode($fBack);
-
- ?>