PHP配置 引用mysqli擴展 不需要絕對路徑 如果不啟用,那麼引用mysqli擴展必須使用絕對路徑引用 建立和斷開鏈接 獲取錯誤信息 獲取錯誤碼 獲取錯誤信息 在單獨的文件中存儲鏈接信息 在必要時包含此文件 與資料庫交互 向資料庫發送查詢 ·獲取數據 query()方法 mysqli_store ...
PHP配置
- 引用mysqli擴展
extension = php_mysqli.dll
- 不需要絕對路徑
如果不啟用,那麼引用mysqli擴展必須使用絕對路徑引用
extension_dir = "ext"
建立和斷開鏈接
$mysqli = new mysqli();//實例化mysqli類 $mysqli -> connect("localhost","root","123");//鏈接資料庫 $mysqli -> select_db("text");//選擇text資料庫 $mysqli -> close();//關閉鏈接
獲取錯誤信息
- 獲取錯誤碼
$mysqli = new mysqli("localhost","root","123","test"); echo $mysqli -> errno;//沒有錯誤返回0
- 獲取錯誤信息
$mysqli = new mysqli("localhost","root","123");//實例化mysqli類 $mysqli -> select_db("text");//選擇text資料庫 if($mysqli -> errno){ echo $mysqli -> error;//Unknown database 'text' 沒有text資料庫 } $mysqli -> close();//關閉鏈接
- 在單獨的文件中存儲鏈接信息
//mysql.connect.php文件 <?php $mysqli = new mysqli("localhost","root","123","test"); ?>
- 在必要時包含此文件
<?php include "mysql.connect.php";//調用mysql.connect.php文件 ?>
與資料庫交互
- 向資料庫發送查詢
·獲取數據
query()方法
mysqli_store_result 較高的記憶體和處理需求,查詢整個結果集(預設)
mysqli_use_result 較低的記憶體需求,查詢幾行結果集
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id, name, age from xiu";//創建查詢語句 $result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法負責將query發送到資料庫 while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法將獲得的值生成一個數組 printf("%d*%d*%d",$id,$name,$age); } $mysqli -> close();//關閉資料庫鏈接
·插入、刪除或更新數據
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "alter table xiu add column birdate date";//創建查詢語句 $mysqli -> query($query);//$query()方法負責將query發送到資料庫 echo $mysqli -> affected_rows;//提示影響的多少行 $mysqli -> close();//關閉資料庫鏈接
·釋放查詢記憶體
有時可能會獲取一個特別大的結果集,會占用大量記憶體,使用free()方法釋放占用的記憶體
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id, name, age from xiu";//創建查詢語句 $result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法負責將query發送到資料庫 while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法將獲得的值生成一個數組 printf("%d*%d*%d",$id,$name,$age); } $mysqli -> free();//釋放記憶體
- 解析查詢結果
·將結果放在對象中
fetch_object()方法將結果集放入對象中
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id, name, age from xiu";//創建查詢語句 $result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫 while($xiu = $result -> fetch_object()){//fetch_object()方法將結果集放入對象中 $id = $xiu -> id; $name = $xiu -> name; $age = $xiu -> age; printf("id:%d,name:%s,age:%d",$id,$name,$age); } $mysqli -> close();//關閉資料庫鏈接
·使用索引數組和關聯數組獲取結果
fetch_array()將結果集放入數組
MYSQLI_ASSOC 將行作為一個關聯數組返回,鍵由欄位表示,值由欄位內容表示
MYSQLI_NUM 將行作為一個數字索引數組返回,元素的屬性有查詢中的順序決定
MYSQLI_BOTH 將行作為關聯數組和數組索引數組返回
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id, name, age from xiu";//創建查詢語句 $result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫 while($xiu = $result -> fetch_array(MYSQLI_ASSOC)){//fetch_array()方法將結果集放入數組 $id = $xiu["id"]; $name = $xiu["name"]; $age = $xiu["age"]; printf("id:%d,name:%s,age:%d",$id,$name,$age); } $mysqli -> close();//關閉資料庫鏈接
- 確定所選擇的行和受影響的行
·確定返回的行數
num_rows屬性返回查詢了多少行數據
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id, name, age from xiu";//創建查詢語句 $result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫 echo $result -> num_rows;//num_rows屬性查詢返回了多少行數據 $mysqli -> close();//關閉資料庫鏈接
·確定受影響的行數
affected_rows屬性返回受insert、update或delet查詢影響的行數
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "insert into xiu values(4,'user',20)";//創建查詢語句 $mysqli -> query($query);//$query()方法負責將query發送到資料庫 echo $mysqli -> affected_rows;//affected_rows屬性返回影響的行數 $mysqli -> close();//關閉資料庫鏈接
- 處理準備語句
捆綁參數
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "insert into xiu values(?,?,?)";//創建查詢即相對應的占位符(?) $stmt = $mysqli -> stmt_init();//創建語句對象 $stmt -> prepare($query);//為執行準備語句 $stmt -> bind_param("dsd",$id,$name,$age);//綁定參數 $id = 5;$name = "4";$age = 3; $stmt -> execute();//執行語句 $stmt -> close();//恢復語句資源 $mysqli -> close();//關閉資料庫鏈接
·捆綁變數
$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫 $query = "select id,name,age from xiu";//創建查詢即相對應的占位符(?) $stmt = $mysqli -> stmt_init();//創建語句對象 $stmt -> prepare($query);//為執行準備語句 $stmt -> execute();//執行語句 $stmt -> bind_result($id,$name,$age);//綁定結果參數 while($stmt -> fetch()){//fetch()獲取準備語句結果的每一行 printf("id:%d,name:%s,age:%d",$id,$name,$age); } $stmt -> close();//恢復語句資源 $mysqli -> close();//關閉資料庫鏈接