這篇文章主要介紹了PHP 操作 MySQL,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
一、使用PHP串連MySQL資料庫
使用PHP函數 mysqli_connect 串連上mysql資料庫
文法:$conn = mysqli_connect('主機名稱','使用者名稱','密碼','資料庫名',連接埠);
串連成功返回資來源物件,失敗返回false
$conn
稱為【資料庫連接標識】
header("Content-type:text/html;charset=utf-8");$conn = @mysqli_connect('localhost','root','root','student') or die("資料庫連接錯誤!");echo "<pre>";var_dump($conn);echo "</pre>";
二、使用PHP訪問MySQL資料庫
使用PHP函數 mysqli_query 向MySQL資料庫發送SQL指令去查詢,將MySQL資料庫返回的結果封裝成對象作為函數的傳回值。
文法:$result = mysqli_query(資料庫連接標識,SQL指令);
$result
稱為【結果集】
三、結果集的處理
有兩種結果集,主要區別於當前所執行的SQL指令,是否存在資料返回。
有返回資料:select、show、desc
mysqli_query 會返回一個資源類型。執行成功返回結果集,失敗返回 false
注意:由於資源類型永遠為真,不能用於判斷是否有資料,只能判斷命令是否執行成功
無返回資料:insert、delete、update、set、DDL(資料定義語言 (Data Definition Language),如create、alter、drop)
mysqli_query 會返回一個布爾值。執行成功返回true,失敗返回 false
使用 mysqli_fetch_assoc 從結果集中讀取資料,將讀取到的資料以關聯陣列的形式返回,關聯陣列的鍵名就是 欄位名 ,同時結果集的指標向下移動一行。
文法:$row = mysqli_fetch_assoc(結果集);
header("Content-type:text/html;charset=utf-8");$conn = @mysqli_connect('localhost','root','root','student') or die("資料庫連接錯誤!");$rs = mysqli_query($conn, 'set names utf8');//設定PHP與MySQL互動預設字元集var_dump($rs);$rs = mysqli_query($conn, 'select * from student');while ($row = mysqli_fetch_assoc($rs)) { echo "<pre>"; var_dump($row); echo "</pre>";}
從結果集中得到資料的三個函數:
mysqli_fetch_assoc() 擷取一行資料作為【關聯】數組返回
mysqli_fetch_row() 擷取一行資料作為【索引】數組返回
mysqli_fetch_array() 擷取一行資料作為【關聯】數組和【索引】數組返回
統計結果集中資料的行數
文法:mysqli_num_rows(結果集);
通常用於判斷結果集中是否有資料,如果大於0就證明有資料,等於0就是沒資料。
echo mysqli_num_rows($conn);
釋放結果集,釋放結果集所佔的記憶體空間
文法:mysqli_free_result(結果集);
mysqli_free_result($rs);
四、關閉資料庫連接
文法:mysqli_close(資料庫連接標識);
如不使用 mysqli_close 關閉資料庫連接,PHP預設在代碼執行結束後自動關閉。
mysqli_close($conn);
五、其他用法
錯誤資訊
文法:mysqli_error(資料庫連接標識);
通常用於對錯誤進行調試和查看
echo mysqli_error($conn);
擷取剛插入資料的ID
文法:mysqli_insert_id(資料庫連接標識);
六、項目的字元編碼
MySQL的字元集
MySQL資料最終是儲存在資料庫,表,記錄上的。
資料在真實儲存時,受到幾個地方的影響:
欄位的編碼
表的編碼
庫的編碼
MySQL伺服器的內建編碼
如果欄位上設定了編碼,儲存資料以欄位編碼為準。
如果欄位沒有設定編碼,以表的編碼為準。
如果表沒有設定編碼,則以庫上設定的編碼為準。
如果庫沒有設定編碼,則以MySQL伺服器的內建編碼為準。
以上編碼都是伺服器確定的,只需對資料庫、表、欄位的編碼進行設定即可。
資料在用戶端展示的編碼
四個地方影響用戶端的展示
資料在伺服器端儲存的編碼
下面三個與用戶端相關
用戶端向伺服器端發送的資料編碼
伺服器變數(配置項):character_set_client
用戶端與伺服器端之間的串連層使用的編碼
伺服器變數(配置項):character_set_connection
伺服器端向用戶端發送的處理結果的資料編碼
伺服器變數(配置項):character_set_results
可以使用 show variables like 'char%';
在MySQL命令列模式下查看相關變數。
可使用 set指令單獨設定,如:set character_set_results=utf8;
set names 是一個快捷操作,同時設定了以上三個伺服器變數(配置項),當使用set names utf8;
時,相當於
set character_set_client=utf8;set character_set_connection=utf8;set character_set_results=utf8;
項目中確保字元編碼五個地方統一
MySQL資料庫伺服器儲存資料的編碼
設定php與MySQL互動層編碼 mysqli_query($conn, 'set names utf8');
PHP與瀏覽器之間互動的編碼 header("Content-type:text/html;charset=utf-8");
HTML meta 標籤聲明使用編碼 <meta charset="UTF-8">
PHP檔案儲存的編碼(在編輯器中設定)