1. 程式人生 > 其它 >GO程式設計模式02:錯誤處理

GO程式設計模式02:錯誤處理

1.視覺化工具

  ①PHPmyadmin

    在Xampp環境下的訪問地址:

    http://127.0.0.1(:埠號)/phpmyadmin  或者

    http://localhost(:埠號)/phpmyadmin  埠號為“80”時可不加埠號。

  ②NavicatforMySQL

    需要單獨下載安裝。

  說明:

    這兩個工具都僅是對資料庫進行操作和管理的工具,並不是資料庫。

  ③PHPmyadmin登入報錯

  

  安裝的“XAMPPControlPanelv3.2.4”預設的MySQLPort是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 = "deletefrom[表名]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);

?>