資料庫程式設計 – PHP+MySQL 第 六章 SQL 語言與 PHP+MySQL   上一頁      下一頁

 

6-4 PHP MySQL 連結

內容:

  • 6-4-1 PHP 與 MySQL 連結步驟

  • 6-4-2 範例研討:PHP 與 MySQL 連線

  • 6-4-3 範例研討:PHP 與資料庫連線

6-4-1 PHP MySQL 連結步驟

交談式 SQL 命令大多應用在管理資料庫方面,要發展一套資料庫的應用管理系統,還是需要透過一般系統發展工具才行,這裡所要介紹的是利用 PHP 網頁發展工具,來結合 SQL 語言,成為一套完整的網頁資料庫發展系統。

簡單的說,我需要編寫 PHP 語言程式來存取資料庫,目前常用函數有: PHP-MySQLPHP-MySQLi PDO (PHP Data Object) 等三種套件。PDO 是屬於抽象式物件導向,利用它發展出來應用程式相容於其它資料庫。另外兩套件是 MySQL 專屬套件,並不相容於其他資料庫,但目前網路上還是以它最普遍,以它為範例介紹。

(A) Mysql MySQLi 區別

1.        mysql mysqli 兩者都是 PHP 的函數集,與 MySQL 資料庫關聯沒差異。

2.        PHP 5.0 版本採用 mysql 函數,以後版本兩者皆有,到了 PHP 7.0 以後便捨棄 mysql 函數。

3.        mysql 是非持續連線方式,每次連線都要開啟一個連線程序;mysqli 函數是持續連接方式,多次連線共用一個連線程式,如此可減低伺服器的負荷。

既然 PHP 7.0 以後版本不再提供 mysql 函數,吾人還是以 mysqli 為主要介紹對象,但它又有兩種套件格式:

1.        程序方式:如同一般函數呼叫方式。

2.        物件導向方式:具有繼承性、多形性、、等等物件導向的功能。

兩者在編寫程式上有很大差別,吾人為了降低程學習門檻,僅介紹『程序方式』,至於物件導向設計,等讀者孰悉『資料庫程式設計』後再自行研讀,就不會很困難。

(B) MySQLi 函數

常用 PHP-mysqli 函數有下列:

   

   

mysqli_connect(“….”)

建立 MySQL 伺服器連線。傳回 $link 識別值。

mysqli_select_db($link, "course_db”)

開啟 course_db 資料庫。傳回 $dblink 識別值。

mysqli_query("SET NAMES 'utf8'")

設定字元集與編碼。

mysqli_query($dblink, $sql_query)

傳送 SQL 查詢語句。傳回執行結果 $result

mysqli_close($dblink)

關閉資料庫連線。

mysqli_result($sql_ID, row, field)

一次只能取得一個欄位的內容。

mysqli_db_name($sql_ID, row, field)

取得 mysql_list_dbs() 傳回來資料庫名稱

mysqli_fetch_row($sql_ID)

一次取得一筆()資料,並將游標往下移。

mysqli_fetch_array()

一次取得一筆()資料,包含欄位索引與資料,並將游標往下移。

mysqli_fetch_assoc()

一次取得一筆()資料,使用欄位名稱來取得欄位內容,並將游標往下移。

mysqli_fetch_field()

擷取欄位名稱

mysqli_num_rows()

適用於 Select 命令執行後傳回資料列的筆數。

mysqli_num_fields()

適用於 Select 命令執行後傳回資料的欄位數。

mysqli_affected_rows()

適用於 Selectdeleteupdate 命令執行後,受到影響的記錄筆數。

其中:mysqli_connect() 有兩種格式:

n   建立 MySQL 伺服器連線:mysqli_connect ("伺服器IP", "帳號", "密碼") ,回傳連線識別值 $link (可任意指定)

n   建立連線同時選擇資料庫:mysqli_connect ("伺服器IP", "帳號", "密碼", "database"),回傳資料庫識別值 $dblink (可任意指定)

(B) PHP-MySQLi 連線存取步驟

6-6 是透過 PHP-mysqli 連線存取 MySQL 資料庫的步驟,以下分別說明之:

6-6 PHP 連線存取 MySQL 步驟

(1) $db_link = mysqli_connect(“localhost”, “root”, “123456”)要求連結資料庫伺服器系統。透過網路連結到資料庫系統,如成功則傳回一個整數型態的連線識別碼 $db_link,否則傳回 0。其中,localhost 表示資料庫伺服器的主機位址(IP URL 位址亦可),與連線要求的使用者名稱(root)與密碼(123456)

(2) $select_db = mysqli_select_db(course_db)選擇資料庫,一個伺服器系統內大多會被建立多個資料庫,可利用此函數選擇其中某一個資料庫(course_db),成功則傳回一個整數的識別碼存入 $select_db,否則傳回 0

(3) $sql_ID = mysqli_query($sql_query)送出 SQL 查詢語言 $sql_query,須先將查詢語句存入 $sql_ID 內。成功則傳回一個整數識別碼給 $result,否則傳回 0

(4) $meta = mysqli_fetch_field($sql_ID)擷取查詢結果的欄位資料,再由 $meta->name 取出欄位名稱,則可印出查詢結果各欄位的名稱。

(5) $row = mysqli_fetch_row($sql_ID)擷取查詢結果($sql_ID) 的一列(row)資料,並將游標往下移,將擷取結果傳回 $row 內,如傳回空值表示已擷取完或沒有查詢成功。

(6) mysqli_close($db_link)要求與資料庫伺服器之間連線中斷。

6-4-2 範例研討:PHP MySQL 連線

(A) 程式功能:Ex6_7.php

請編寫一只網頁連結資料庫伺服器的測試程式,伺服器位址在本機電腦(localhost),使用者名稱是 root,密碼是:123456。期望顯示連線成功否如下所示。

連線失敗則顯示:

 (B) 程式範例:

我們利用 $db_link = mysql_connect(“localhost”, “root”, “123456”) 函數連結伺服器系統,如下: (利用 NotePad++ 編輯)

1

2

3

4

5

6

7

8

?php

        $db_link = mysqli_connect(“localhost”, “root”, “12345678”);

        if(!$db_link) {

                echo “MySQL 伺服器連結失敗”;}

        else {

                echo “MySQL 伺服器連結成功”; }

        mysqli_close($db_link);

?>

利用記編輯 Ex6_7.php 程式後,再存放在 c:/appServ/www 目錄下,再開啟瀏覽器檔案。譬如儲存於 C://appServ/www/chap6 目錄下,則輸入:http://localhost/chap6/Ex5_7.php

6-4-3 範例研討:PHP 與資料庫連線

(A) 程式功能:Ex6_8.php

伺服器連線成功後。接著再練習連結某一資料庫( course_system),期望顯示連線成功否如下所示。

 (B) 程式範例:

我們利用 $select_db = mysqli_select_db(course_db)函數來選擇連結 course_db資料庫,如下:

1

2

3

4

5

6

7

8

9

10

<?php

        $db_link = mysqli_connect(“localhost”, “root”, “12345678”)

                or die(“MySQL 伺服器連結失敗 <br>”);

        $select_db = mysqli_select_db(“course_db”);

        if (!select_db)

                echo “無法開啟資料庫 !<br>”;

        else

                echo “course_db 資料庫開啟成功”;

        mysqli_close($db_link);

?>

翻轉工作室:粘添壽

course_db 關聯圖

 

資料庫程式設計:

 

 

 

翻轉電子書系列: