前 言
php
php中的數據庫擴展mysql語法--本篇學習都是通過使用數字天堂的HBuider開發環境,連接mysql數據.介紹php連接mysql數據庫的代碼與函數。
本篇學習主要有兩個部分:
①【面向過程】
②【面向對象】
內容大同小異:
一、連接數據庫
二、檢測數據庫連接是否成功--連接數據庫同時判斷
三、選擇數據庫
四、編寫SQL語句
五、執行SQL語句--代碼執行之后,返回的結果集
六、處理結果集的一些函數
七、釋放查詢資源結果集
八、關閉數據庫連接
以下所有代碼HBuider中建立PHP文件實施。
| 1、面向過程 |
① 連接數據庫 :
連接數據庫 使用:mysqli_connect
參數: ① 主機地址 ② mysql用戶名 ③ mysql密碼 ④ 選擇連接的數據庫 ⑤ 端口號
返回: 如果連接成功,返回資源類型的表示符號
如果連接失敗,則返回false
如果我們與MYSQL建立的鏈接不止一條,那么以后操作數據庫的各種函數都必須傳入返回的標識符號;
如果我們與MYSQL建立的連接只有一條,那么以后操作數據庫的各種函數就不必傳入這個表示符號
//$conn = mysqli_connect("xxx.0.0.x","root","","mydb");//密碼為零可以省略
$conn = mysqli_connect("xxx.0.0.x","root","1"); 這行代碼在所有代碼之前的必須存在。
圖片:↓↓↓↓↓↓↓↓↓↓
圖 1.1 Navicat Premium中的mysql主機中的mydb數據庫
② 檢測數據庫連接是否成功
mysqli_connect_errno():返回上次連接數據庫的錯誤號,連接成功返回0
mysqli_connect_error():返回上次連接數據庫的錯誤信息
代碼如下 ↓↓↓
if(mysqli_connect_errno()){
die("lalalala:".mysqli_connect_error());
}
var_dump($conn);
打印的效果圖片: ↓↓↓↓↓↓↓↓↓↓
//連接數據庫同時判斷
$conn = mysqli_connect("127.0.0.1","root") or die("lalalala:".mysqli_connect_error()); ;
③ 選擇數據庫:mysqli_select_db
參數: ① 資源標識符 ② 選擇的數據庫名稱
返回: 連接成功返回true,鏈接失敗返回false
如果修改數據庫成功,則西苑標識符中的數據庫就會發生變更
如果修改失敗,而沒有通過代碼終止操作,則后續代碼可以使用原數據庫繼續執行。
代碼如下:
// ↓var_dump(mysqli_select_db($conn,"mydb1") or die("數據庫選擇失敗") )
效果圖如下 ↓↓↓↓↓↓↓↓↓
var_dump(mysqli_select_db($conn,"mydb") or die("數據庫選擇失敗"));
效果圖如下 ↓↓↓↓↓↓↓↓↓
④ 編寫SQL語句
mysql語句中的增刪改查
⑤ 執行SQL語句
如果是增、刪、改,將返回布爾型的是否成功;
如果是查詢,返回資源結果集
如果查詢失敗,返回false
圖片:↓↓↓↓↓↓↓↓↓
圖片 1.2 數據庫mydb中的表tb1中的表格內容
代碼如下:
//編寫SQL語句--查詢tb1表單中的所有數據
$sql = "select * from tb1";
$set = mysqli_query($conn, $sql);
var_dump($set);
效果圖:
圖 1.3 $set返回的結果集
⑥ 處理結果集的函數(一)
↓↓承接上文↓↓
//DQL時:返回資源結果集中的行數
var_dump(mysqli_num_rows($set));
效果圖:
↓↓承接上文↓↓
//DQL時:返回資源結果集中的行數
var_dump(mysqli_num_rows($set));
效果圖:
//DQL時:返回資源結果集中的字段(列)
var_dump(mysqli_num_fields($set));
效果圖:
⑦
處理結果集的函數(二)
處理結果集,返回關聯數組和索引數組
mysqli_fetch_array()
參數 ① :需要處理的結果集
參數 ② :返回哪種數組格式
MYSQL_ASSOC 關聯
MYSQL_NUM 索引
MYSQL_BOTH 默認,同時產生兩種數組
處理結果集,返回關聯數組和索引數組
mysqli_fetch_array()
參數 ① :需要處理的結果集
參數 ② :返回哪種數組格式
MYSQL_ASSOC 關聯
MYSQL_NUM 索引
MYSQL_BOTH 默認,同時產生兩種數組
代碼如下(承接上文):
var_dump(mysqli_fetch_array($set));
效果圖:
同時打印關聯數組和索引數組
var_dump(mysqli_fetch_array($set));
效果圖:
同時打印關聯數組和索引數組
代碼如下(承接上文):
var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果圖:

//下方代碼也返回關聯數組同上圖一樣↑
var_dump(mysqli_fetch_assoc($set));
var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果圖:

//下方代碼也返回關聯數組同上圖一樣↑
var_dump(mysqli_fetch_assoc($set));
代碼如下(承接上文):
var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果圖:

//下方代碼也返回索引數組同上圖一樣↑
var_dump(mysqli_fetch_row($set));
var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果圖:

//下方代碼也返回索引數組同上圖一樣↑
var_dump(mysqli_fetch_row($set));
⑧ 處理結果集的函數(三)
// 結果集復位到最開始
// mysqli_data_seek($set,0)
代碼如下:
// 結果集復位到最開始
mysqli_data_seek($set,0);
//打印表單第一組數據
var_dump(mysqli_fetch_row($set));
//打印表單第二組數據
var_dump(mysqli_fetch_row($set));
//釋放查詢資源結果集
mysqli_free_result($set);
//關閉數據庫鏈接
mysqli_close($conn);
mysqli_free_result($set);
//關閉數據庫鏈接
mysqli_close($conn);
1 <?php 2 header("Content-type:text/html;charset=utf-8"); 3 4 /*連接數據庫 使用:mysqli_connect 5 參數: ① 主機地址 ② mysql用戶名 ③ mysql密碼 ④ 選擇連接的數據庫 ⑤ 端口號 6 返回: 如果連接成功,返回資源類型的表示符號 7 如果連接失敗,則返回false 8 * 如果我們與MYSQL建立的鏈接不止一條,那么以后操作數據庫的各種函數都必須傳入返回的標識符號; 9 * 如果我們與MYSQL建立的連接只有一條,那么以后操作數據庫的各種函數就不必傳入這個表示符號 10 * 11 * 12 */ 13 $conn = mysqli_connect("127.0.0.1","root","","mydb");//密碼為零可以省略 14 //$conn = mysqli_connect("127.0.0.1","root","1"); 15 16 /* 檢測數據庫連接是否成功 17 * mysqli_connect_errno():返回上次連接數據庫的錯誤號,連接成功返回0 18 * mysqli_connect_error():返回上次連接數據庫的錯誤信息 19 * ↓↓↓ */ 20 21 if(mysqli_connect_errno()){ 22 die("lalalala:".mysqli_connect_error()); 23 } 24 var_dump($conn); 25 26 //連接數據庫同時判斷 27 $conn = mysqli_connect("127.0.0.1","root") or die("lalalala:".mysqli_connect_error()); ; 28 29 30 31 /* 選擇數據庫mysqli_select_db 32 * 參數: ① 資源標識符 ② 選擇的數據庫名稱 33 * 返回: 連接成功返回true,鏈接失敗返回false 34 * 35 * 如果修改數據庫成功,則西苑標識符中的數據庫就會發生變更 36 * 如果修改失敗,而沒有通過代碼終止操作,則后續代碼可以使用原數據庫繼續執行。 37 * */ 38 //var_dump(mysqli_select_db($conn,"mydb1") or die("數據庫選擇失敗") ) 39 40 var_dump(mysqli_select_db($conn,"mydb") or die("數據庫選擇失敗")); 41 42 43 /* 44 * 設置字符集編碼格式mysqli_set_charset() 45 * 只能設置為utf8而不是utf-8 46 * */ 47 mysqli_set_charset($conn,"utf8") or die("數據庫編碼集設置失敗"); 48 49 /* 編寫SQL語句 50 * */ 51 $sql = "select * from tb1"; 52 /*<<<str 53 INSERT INTO tb1 (username,age,sex) VALUES ("張三","122","女"); 54 str; 55 * */ 56 /* 執行SQL語句 57 * 如果是增、刪、改,將返回布爾型的是否成功; 58 * 如果是查詢,返回資源結果集 59 * 60 * 如果查詢失敗,返回false 61 * */ 62 $set = mysqli_query($conn, $sql); 63 64 //DML時,返回上一次操作時,受影響的行數 65 //var_dump(mysqli_affected_rows($conn)) 66 67 //執行插入語句時,返回上次最新插入的主鍵ID 68 //var_dump(mysqli_insert_id($conn)); 69 70 var_dump($set); 71 72 //DQL時:返回資源結果集中的行數 73 var_dump(mysqli_num_rows($set)); 74 //DQL時:返回資源結果集中的字段(列) 75 var_dump(mysqli_num_fields($set)); 76 77 /* 處理結果集,返回關聯數組和索引數組 78 * mysqli_fetch_array() 79 * 參數 ① :需要處理的結果集 80 * 參數 ② :返回哪種數組格式 81 * MYSQL_ASSOC 關聯 82 * MYSQL_NUM 索引 83 * MYSQL_BOTH 默認,同時產生兩種數組 84 * */ 85 86 var_dump(mysqli_fetch_array($set)); 87 var_dump(mysqli_fetch_array($set,MYSQL_ASSOC)); 88 var_dump(mysqli_fetch_array($set,MYSQL_NUM)); 89 90 91 //返回關聯數組 92 var_dump(mysqli_fetch_assoc($set)); 93 //返回索引數組 94 var_dump(mysqli_fetch_row($set)); 95 //返回對象 96 var_dump(mysqli_fetch_object($set)); 97 var_dump(mysqli_fetch_object($set)); 98 99 100 101 /* mysqli_data_seek($set,0) 102 * 結果集復位到最開始 103 * */ 104 mysqli_data_seek($set,0); 105 var_dump(mysqli_fetch_row($set)); 106 var_dump(mysqli_fetch_row($set)); 107 108 /*返回結果集每一列的字段信息。(字段名、表明、數據庫名、字段類型、長度等……) */ 109 //var_dump(mysqli_fetch_field($set)); 110 111 //釋放查詢資源結果集 112 mysqli_free_result($set); 113 114 //關閉數據庫鏈接 115 mysqli_close($conn); 116 117 ?>
| 2、面向對象 |
① 連接數據庫
$conn = @new mysqli("xxx.0.0.x","root","","mydb");
② 返回連接錯誤
$conn->connect_errno
③ 返回連接信息
$conn->connect_error
④ 選擇數據庫
$conn->select_db("mydb")
⑤ 設置字符集編碼
$conn->set_charset("utf8")
代碼如下:
//如果出現錯誤則在頁面打印如下:比如在沒有mydb1把上表中的mydb改為mydb1,在頁面就會出現如下樣式
1 //連接數據庫 2 $conn = @new mysqli("127.0.0.1","root","","mydb"); 3 4 //↓查看連接數據庫的返回內容 5 // var_dump ($conn) 6 7 if($conn->connect_errno){//返回連接錯誤號。 8 //↓返回連接錯誤信息 9 die("連接失敗".$conn->connect_error); 10 } 11 //↓選擇數據庫 12 $conn->select_db("mydb") or die("選擇數據庫失敗:".$conn->error);
//↓設置字符集編碼
$conn->set_charset("utf8") or die("設置字符集失敗:".$conn->error); //↑同上
1 //准備sql語句 2 $sql = <<<sql 3 select * from tb1; 4 sql; 5 6 // 執行SQL語句,返回結果集或者布爾類型true/false 7 $res = $conn->query($sql); 8 var_dump($res); 9 10 // 返回結果集中的字段數 11 var_dump($res->field_count); 12 // 返回結果集中的總行數 13 var_dump($res->num_rows); 14 15 // 返回關聯數組和索引數組 16 var_dump($res->fetch_array()); 17 // 返回索引數組 18 var_dump($res->fetch_row()); 19 // 返回關聯數組 20 var_dump($res->fetch_assoc()); 21 // 返回一個對象 22 var_dump($res->fetch_object()); 23 24 // 將結果集指針移到指定位置 25 $res->data_seek(0); 26 27 28 // 返回結果集中的一個字段,並將指針移到下一列 29 var_dump($res->fetch_field()); 30 // 直接返回結果集中的所有字段 31 var_dump($res->fetch_fields()); 32 33 34 //釋放結果集資源 35 $res->close();// $res->free(); 36 //關閉數據庫連接 37 $conn->close();
學習時候的筆記,可能會有一些錯誤的地方,歡迎各位的批評指點。
反思,復盤,每天收獲一點---------------------期待更好的自己
