zoukankan      html  css  js  c++  java
  • 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);
    
    ?>
    

      

  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/husa/p/14243517.html
Copyright © 2011-2022 走看看