PHP 操作 MySQL

來源:互聯網
上載者:User

這篇文章主要介紹了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指令,是否存在資料返回。

  1. 有返回資料:select、show、desc
    mysqli_query 會返回一個資源類型。執行成功返回結果集,失敗返回 false
    注意:由於資源類型永遠為真,不能用於判斷是否有資料,只能判斷命令是否執行成功

  2. 無返回資料: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>";}

從結果集中得到資料的三個函數:

  1. mysqli_fetch_assoc() 擷取一行資料作為【關聯】數組返回

  2. mysqli_fetch_row() 擷取一行資料作為【索引】數組返回

  3. 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伺服器的內建編碼為準。

以上編碼都是伺服器確定的,只需對資料庫、表、欄位的編碼進行設定即可。

資料在用戶端展示的編碼
四個地方影響用戶端的展示

  1. 資料在伺服器端儲存的編碼

下面三個與用戶端相關

  1. 用戶端向伺服器端發送的資料編碼
    伺服器變數(配置項):character_set_client

  2. 用戶端與伺服器端之間的串連層使用的編碼
    伺服器變數(配置項):character_set_connection

  3. 伺服器端向用戶端發送的處理結果的資料編碼
    伺服器變數(配置項):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;

項目中確保字元編碼五個地方統一

  1. MySQL資料庫伺服器儲存資料的編碼

  2. 設定php與MySQL互動層編碼 mysqli_query($conn, 'set names utf8');

  3. PHP與瀏覽器之間互動的編碼 header("Content-type:text/html;charset=utf-8");

  4. HTML meta 標籤聲明使用編碼 <meta charset="UTF-8">

  5. PHP檔案儲存的編碼(在編輯器中設定)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.