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