• WEB前端第五十六课——MySQL、前后台交互


    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);
    
    ?>
    

      

  • 相关阅读:
    记住密码功能
    android 对软键盘显示和消失,EditView的焦点获取事件进行监听
    Intent可以传递的数据
    是否有网络
    关于6.0闪退问题
    关于Android Studio使用高德地图地位
    CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关
    docker学习读书笔记-一期-整理
    阿里云https免费证书配置-包教会
    Dizcuz站点部署-包教会
  • 原文地址:https://www.cnblogs.com/husa/p/14243517.html
Copyright © 2020-2023  润新知