1 / 54

PHP5&MySQL 程式設計

PHP5&MySQL 程式設計. 第 12 章 存取 My SQL 資料庫. 12-1 PHP 與 MySQL 資料庫. PHP 提供了數十個函式供我們存取 MySQL 資料庫,包括: mysql_affected_rows() mysql_client_encoding() mysql_close() mysql_connect() mysql_create_db() mysql_data_seek() mysql_db_name() mysql_db_query() mysql_drop_db() mysql_errno(). mysql_error()

todd-hinton
Download Presentation

PHP5&MySQL 程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP5&MySQL程式設計 第12章 存取My SQL資料庫

  2. 12-1PHP與MySQL資料庫 • PHP提供了數十個函式供我們存取MySQL資料庫,包括: • mysql_affected_rows() • mysql_client_encoding() • mysql_close() • mysql_connect() • mysql_create_db() • mysql_data_seek() • mysql_db_name() • mysql_db_query() • mysql_drop_db() • mysql_errno()

  3. mysql_error() • mysql_fetch_array() • mysql_fetch_assoc() • mysql_fetch_field() • mysql_fetch_object() • mysql_fetch_row() • mysql_field_len() • mysql_field_name() • mysql_field_seek() • mysql_field_table() • mysql_field_type() • mysql_free_result() • mysql_get_client_info()

  4. mysql_get_host_info() • mysql_get_proto_info() • mysql_get_server_info() • mysql_list_dbs() • mysql_list_fields() • mysql_list_tables() • mysql_num_fields() • mysql_num_rows() • mysql_pconnect() • mysql_query() • mysql_result() • mysql_select_db()

  5. 12-2 建立與關閉資料連接 12-2-1 建立資料連接 一、使用mysql_connect() 函式建立資料連接 我們可以使用mysql_connect() 函式建立資料連接,其語法如下: mysql_connect([string server [, string username [, string password [, bool new_link]]]])

  6. \ch12\mysql_connect.php 01:<HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>建立資料連接</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: if (!$link) 10: { 11: die("無法建立連接"); 12: } 13: echo "成功建立連接"; 14: ?> 15: </BODY> 16:</HTML>

  7. 二、使用mysql_pconnect() 函式建立永久資料連接 除了mysql_connect() 函式之外,您也可以選擇使用mysql_pconnect() 函式建立永久資料連接,其語法如下: mysql_pconnect([string server [, string username [, string password]]])

  8. \ch12\mysql_pconnect.php 01:<HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>建立資料連接</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_pconnect("localhost", "root", "mypassword"); 09: if (!$link) 10: { 11: die("無法建立連接"); 12: } 13: echo "成功建立連接"; 14: ?> 15: </BODY> 16:</HTML>

  9. 12-2-2 關閉資料連接 • mysql_close([resource link_identifier]) \ch12\mysql_close.php 01:<HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>建立資料連接</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: if (!$link) 10: { 11: die("無法建立連接"); 12: } 13: echo "成功建立連接"; 14: mysql_close($link); 15: ?> 16: </BODY> 17:</HTML>

  10. 12-3 操作MySQL資料庫伺服器 12-3-1 取得預設字集名稱 mysql_client_encoding([resource link_identifier]) \ch12\mysql_client_encoding.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得資料連接所使用的預設字集名稱</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); $charset = mysql_client_encoding(); echo "最後開啟之資料連接所使用的字集名稱: $charset"; mysql_close($link); ?> </BODY> </HTML>

  11. 12-3-2 取得MySQL用戶端函式庫的版本資訊 mysql_get_client_info() \ch12\mysql_get_client_info.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得資料連接所使用的預設字集名稱</TITLE> </HEAD> <BODY> <?php echo "MySQL 用戶端程式庫的版本: " . mysql_get_client_info(); ?> </BODY> </HTML>

  12. 12-3-3 取得MySQL主機的相關資訊 mysql_get_host_info([resource link_identifier]) \ch12\mysql_get_host_info.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得MySQL主機的資訊</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); echo "\$link連線主機為: " . mysql_get_host_info($link); mysql_close($link); ?> </BODY> </HTML>

  13. 12-3-4 取得MySQL資料庫協定的版本資訊 mysql_get_proto_info([resource link_identifier]) \ch12\mysql_get_proto_info.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得MySQL資料庫協定的版本資訊</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); echo "\$link 資源變數的協定版本為: " . mysql_get_proto_info($link); mysql_close($link); ?> </BODY> </HTML>

  14. 12-3-5 取得MySQL資料庫伺服器的版本資訊 mysql_get_server_info([resource link_identifier]) \ch12\mysql_get_server_info.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得MySQL資料庫的版本資訊</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); echo "\$link 連線主機的資料庫版本為: " . mysql_get_server_info($link); mysql_close($link); ?> </BODY> </HTML>

  15. 12-3-6 建立資料庫 mysql_create_db(string database_name [, resource link_identifier]) \ch12\mysql_create_db.php 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>建立資料庫</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: if (!$link) 10: { 11: die("建立資料連接失敗"); 12: } 13: 14: if (mysql_create_db("test_base")) 15: { 16: echo "成功建立指定之資料庫"; 17: } 18: else 19: { 20: echo "無法建立指定之資料庫"; 21: } 22: 23: mysql_close($link); 24: ?> 25: </BODY> 26: </HTML>

  16. 12-3-7 刪除資料庫 mysql_drop_db(string database_name [, resource link_identifier]) \ch12\mysql_drop_db.php 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>刪除資料庫</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: if (!$link) 10: { 11: die("建立資料連接失敗"); 12: } 13: 14: if (mysql_drop_db("test_database")) 15: { 16: echo "成功刪除指定之資料庫"; 17: } 18: else 19: { 20: echo "無法刪除指定之資料庫"; 21: } 22: 23: mysql_close($link); 24: ?> 25: </BODY> 26: </HTML>

  17. 12-3-8 取得操作MySQL資料庫伺服器的錯誤訊息 mysql_errno([resource link_identifier]) mysql_error([resource link_identifier]) \ch12\mysql_error.php 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>顯示錯誤代碼及訊息</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = @mysql_connect("192.168.0.100", "root", "mypassword"); 09: if (!$link) 10: { 11: die("無法建立連接<BR><BR>" . mysql_errno() . " " . mysql_error()); 12: } 13: echo "成功建立連接"; 14: mysql_close($link); 14: ?> 15: </BODY> 16: </HTML>

  18. 12-4 執行SQL命令 12-4-1 開啟資料庫 mysql_select_db( string database_name [, resource link_identifier]) ch12\mysql_select_db.php (下頁續) 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>開啟資料庫</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: if (!$link) 10: {

  19. \ch12\mysql_select_db.php (接上頁) 11: die("無法建立連接<BR><BR>" . mysql_error()); 12: } 13: 14: $db_selected = mysql_select_db("students", $link); 15: if (!$db_selected) 16: { 17: die("無法開啟students資料庫<BR>" . mysql_error($link)); 18: } 19: 20: mysql_close($link); 21: ?> 22: </BODY> 23:</HTML>

  20. 12-4-2 執行SQL命令 一、使用mysql_query() 函式執行SQL命令 mysql_query(string query [, resource link_identifier]) \ch12\mysql_query.php (下頁續) 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>執行SELECT陳述式</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword");

  21. \ch12\mysql_query.php (接上頁) 09: if (!$link) 10: { 11: die("無法建立連接<BR><BR>" . mysql_error()); 12: } 13: $db_selected = mysql_select_db("product", $link); 14: if (!$db_selected) 15: { 16: die ("無法開啟prodcut資料庫<BR>" . mysql_error($link)); 17: } 18: $sql = "SELECT * FROM price WHERE category = '主機板'"; 19: $result = mysql_query($sql, $link); 20: mysql_close($link); 21: ?> 22: </BODY> 23: </HTML>

  22. 二、使用mysql_db_query() 函式執行SQL命令 mysql_db_query(string database_name, string query [, resource link_identifier]) \ch12\mysql_db_query.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>執行SELECT陳述式</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); if (!$link) { die("無法建立連接<BR><BR>" . mysql_error()); } $sql = "SELECT * FROM PRICE WHERE category = '主機板'"; $result = mysql_db_query("prodcut", $sql, $link); mysql_close($link); ?> </BODY> </HTML>

  23. 12-4-3 取得執行SQL命令被影響的記錄數或欄位數12-4-3 取得執行SQL命令被影響的記錄數或欄位數 PHP提供了下列三個函式,讓我們可以得知在執行SQL命令後,有多少筆記錄或多少個欄位受到影響: • mysql_num_rows() 函式:適用於執行SELECT陳述式,可以傳回被篩選出來的記錄數,其語法如下,參數result為資源識別字 (resource identifier): mysql_num_rows(resource result) • mysql_num_fields() 函式:適用於執行SELECT陳述式,可以傳回被篩選出來的欄位數,其語法如下,參數result為資源識別字 (resource identifier): mysql_num_fields(resource result) • mysql_affected_rows() 函式:適用於執行INSERT、UPDATE、DELETE陳述式,可以傳回有多少筆記錄受到該陳述式的影響,其語法如下,參數link_identifier為連接識別字 (link identifier): mysql_affected_rows([resource link_identifier])

  24. 下面的程式碼會執行SELECT陳述式,然後顯示篩選出多少筆記錄及欄位數。 \ch12\mysql_num_rows.php (下頁續) <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得執行SELECT陳述式時,被影響的記錄及欄位數目。</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); if (!$link) { die("無法建立連接<BR><BR>" . mysql_error()); } $db_selected = mysql_select_db("product", $link); if (!$db_selected) { die ("無法開啟prodcut資料庫<BR>" . mysql_error($link)); }

  25. \ch12\mysql_num_rows.php (接上頁) $sql = "SELECT * FROM price WHERE category = '主機板'"; $result = mysql_query($sql, $link); echo "category = 「主機板」 的記錄有 " . mysql_num_rows($result) . " 筆"; echo ",包含 " . mysql_num_fields($result) . " 個欄位。"; mysql_close($link); ?> </BODY> </HTML>

  26. 下面的程式碼會執行INSERT陳述式新增一筆記錄,然後顯示受影響的記錄數。下面的程式碼會執行INSERT陳述式新增一筆記錄,然後顯示受影響的記錄數。 \ch12\mysql_affected_rows_01.php (下頁續) <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得執行INSERT陳述式時,被影響的記錄數目。</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); if (!$link) { die("無法建立連接<BR><BR>" . mysql_error()); }

  27. \ch12\mysql_affected_rows_01.php (接上頁) $db_selected = mysql_select_db("product", $link); if (!$db_selected) { die ("無法開啟prodcut資料庫<BR>" . mysql_error($link)); } $sql = "INSERT INTO price(no, category, brand, specification, price, date, url) VALUES('340','CPU','AMD','AMD AthlonXP 2000+','1800','2004/7/25', 'www.amd.com')"; $result = mysql_query($sql, $link); echo "執行INSERT陳述式時,共有 " .mysql_affected_rows($link). " 筆記錄受影響"; mysql_close($link); ?> </BODY> </HTML>

  28. 下面的程式碼會執行UPDATE陳述式更新記錄,然後顯示被更新的記錄數。下面的程式碼會執行UPDATE陳述式更新記錄,然後顯示被更新的記錄數。 \ch12\mysql_affected_rows_02.php (下頁續) <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得執行UPDATE陳述式時,被影響的記錄數目。</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); if (!$link) { die("無法建立連接<BR><BR>" . mysql_error()); } $db_selected = mysql_select_db("product", $link); if (!$db_selected) { die ("無法開啟prodcut資料庫<BR>" . mysql_error($link)); }

  29. \ch12\mysql_affected_rows_02.php (接上頁) $sql = "UPDATE price SET url = 'www.westerndigital.com' WHERE url = 'www.wdc.com'"; $result = mysql_query($sql, $link); echo "執行UPDATE陳述式時,共有 ".mysql_affected_rows($link)." 筆記錄受影響"; mysql_close($link); ?> </BODY> </HTML>

  30. 12-5 取得欄位資訊 12-5-1 使用mysql_fetch_field() 函式取得欄位資訊 mysql_fetch_field(resource result [, int field_offset]) mysql_fetch_field() 函式的傳回值為object型別,包含下列屬性: • name • table • max_length • not_null • primary_key • unique_key • multiple_key • numeric • blob • type • unsigned • zerofill

  31. 舉例來說,假設要取得第2個欄位資訊,可以寫成如下:舉例來說,假設要取得第2個欄位資訊,可以寫成如下: $meta = mysql_fetch_field($result, 1); 假設要取得第2個欄位資訊並顯示其欄位名稱及資料型態,可以寫成如下: $meta = mysql_fetch_field($result, 1); echo "欄位名稱:" . $meta->name; echo "資料型態:" . $meta->type;

  32. \ch12\mysql_fetch_field.php (下頁續) 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>顯示欄位資訊</TITLE> 05: </HEAD> 06: <BODY> 07: <?php 08: $link = mysql_connect("localhost", "root", "mypassword"); 09: $db_selected = mysql_select_db("product", $link); 10: $sql = "SELECT * FROM PRICE WHERE category = '主機板'"; 11: $result = mysql_query($sql, $link); 12: if (!$result) 13: { 14: die("執行命令失敗 <BR>" . mysql_error()); 15: } 16: 17: echo "<TABLE WIDTH='400' BORDER='1'><TR ALIGN='CENTER'>"; 18: echo "<TD>欄位名稱</TD><TD>資料型態</TD><TD>最大長度</TD></TR>"; 19:

  33. \ch12\mysql_fetch_field.php (接上頁) 20: $i = 0; 21: while ($i < mysql_num_fields($result)) 22: { 23: $meta = mysql_fetch_field($result, $i); 24: echo "<TR>"; 25: echo "<TD>" . $meta->name . "</TD>"; 26: echo "<TD>" . $meta->type . "</TD>"; 27: echo "<TD>" . $meta->max_length . "</TD>"; 28: echo "</TR>"; 29: $i++; 30: } 31: echo "</TABLE>" ; 32: mysql_close($link); 33: ?> 34: </BODY> 35: </HTML>

  34. 12-5-2 使用其它函式取得欄位資訊 • PHP還提供了下列函式,讓我們取得欄位資訊: • mysql_field_name • mysql_field_type • mysql_field_len • mysql_field_table • 這四個函式均有兩個參數: • 參數result:這是資源識別字。 • 參數field_offset:這是欄位的序號,0表示第一個欄位,1表示第二個欄位,依此類推。

  35. \ch12\mysql_field_info.php (下頁續) <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>顯示欄位資訊</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); $db_selected = mysql_select_db("product", $link); $sql = "SELECT * FROM PRICE WHERE category = '主機板'"; $result = mysql_query($sql, $link); if (!$result) { die("執行命令失敗 <BR>" . mysql_error()); } echo "<TABLE WIDTH='400' BORDER='1'><TR ALIGN='CENTER'>"; echo "<TD>欄位名稱</TD><TD>資料型態</TD><TD>欄位長度</TD></TR>";

  36. \ch12\mysql_field_info.php (接上頁) $i = 0; while ($i < mysql_num_fields($result)) { echo "<TR>"; echo "<TD>" . mysql_field_name($result, $i) . "</TD>"; echo "<TD>" . mysql_field_type($result, $i) . "</TD>"; echo "<TD>" . mysql_field_len($result, $i) . "</TD>"; echo "</TR>"; $i++; } echo "</TABLE>" ; mysql_close($link); ?> </BODY> </HTML>

  37. 12-5-3 移動欄位指標 mysql_field_seek() 函式讓我們可以輕鬆地移動欄位指標,其語法如下: mysql_field_seek(resource result, int field_offset) • 參數result:這是資源識別字。 • 參數field_offset:這是欄位的序號,0表示第一個欄位,1表示第二個欄位,依此類推。 例如: $meta = mysql_fetch_field($result, 1); $seek_result = mysql_field_seek($result, 4); $meta = mysql_fetch_field($result);

  38. 12-6 取得記錄內容 mysql_result() 函式一次可以取得一個欄位內容,其語法如下: mysql_result(resource result, int row [, mixed field]) • 參數result • 參數row • 參數field 例如: mysql_result($result, 2, 1); mysql_result($result, 2, "category"); 查詢結果所包含的記錄會佔用伺服器的記憶體,雖然在所有程式碼執行完畢後會自動釋放佔用的記憶體,但我們建議您,可以在適當的時候使用mysql_free_result() 函式釋放記憶體,語法如下,參數result為資源識別字: mysql_free_result(resource result)

  39. \ch12\mysql_result.php (下頁續) 01: <HTML> 02: <HEAD> 03: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 04: <TITLE>顯示所有記錄</TITLE> 05: </HEAD> 06: <BODY> 07: <H1 ALIGN="CENTER">零組件報價表</H1> 08: <?php 09: $link = mysql_connect("localhost", "root", "mypassword"); 10: $db_selected = mysql_select_db("product", $link); 11: $sql = "SELECT * FROM PRICE WHERE category = '主機板'"; 12: $result = mysql_query($sql, $link); 13: 14: echo "<TABLE BORDER='1' ALIGN='CENTER'><TR ALIGN='CENTER'>"; 15: 16: for ($i = 0; $i < mysql_num_fields($result); $i++) 17: { 18: $meta = mysql_fetch_field($result, $i); 19: echo "<TD>" . $meta->name . "</TD>"; 20: } 21: echo "</TR>"; 22:

  40. \ch12\mysql_result.php (接上頁) 23: for ($j = 0; $j < mysql_num_rows($result); $j++) 24: { 25: echo "<TR>"; 26: for ($k = 0; $k < mysql_num_fields($result); $k++) 27: { 28: echo "<TD>" . mysql_result($result, $j, $k) . "</TD>"; 29: } 30: echo "</TR>"; 31: } 32: echo "</TABLE>" ; 33: mysql_free_result($result); 34: mysql_close($link); 35: ?> 36: </BODY> 37: </HTML>

  41. 12-6-2 使用mysql_db_name() 函式取得記錄內容 mysql_db_name() 函式一次可以取得一個欄位內容,語法如下: mysql_db_name(resource result, int row [, mixed field]) • 參數result • 參數row • 參數field 例如: mysql_db_name($result, 2, 1); mysql_db_name($result, 2, "category"); 查詢結果所包含的記錄會佔用伺服器的記憶體,雖然在所有程式碼執行完畢後會自動釋放佔用的記憶體,但我們建議您,可以在適當的時候使用mysql_free_result() 函式釋放記憶體,語法如下,參數result為資源識別字: mysql_free_result(resource result)

  42. 12-6-3 使用mysql_fetch_row() 函式取得記錄內容 PHP提供的mysql_fetch_row() 函式可以用來讀取一筆記錄,然後將記錄指標移到下一筆,倘若讀不到記錄,就傳回FALSE,其語法如下: mysql_fetch_row(resource result) 例如: $row1 = mysql_fetch_row($result); $row2 = mysql_fetch_row($result); $row3 = mysql_fetch_row($result); $row4 = mysql_fetch_row($result); $row5 = mysql_fetch_row($result); echo $row2[2]; echo $row3[0];

  43. 12-6-4 使用mysql_fetch_array() 函式取得記錄內容 mysql_fetch_array() 函式的用途和mysql_fetch_row() 函式一樣,都是用來讀取記錄並存放在陣列,然後將記錄指標移到下一筆,倘若讀不到記錄,就傳回FALSE,不同之處在於取得欄位內容時,mysql_fetch_row() 函式是以欄位序號取得欄位內容,而mysql_fetch_array() 函式則可以使用欄位序號或欄位名稱取得欄位內容。 mysql_fetch_array(resource result [, int result_type]) • 參數result:這是資源識別字。 • 參數result_type:用來指定取得欄位內容的方式,參數值有MYSQL_NUM、MYSQL_ASSOC、MYSQL_BOTH。

  44. 12-6-5 使用mysql_fetch_assoc() 函式取得記錄內容 mysql_fetch_ assoc() 函式和mysql_fetch_array() 函式一樣,都是用來讀取記錄內容並存放在陣列,然後將記錄指標移到下一筆,其語法如下,參數result為資源識別字: mysql_fetch_assoc(resource result)

  45. 12-6-6 使用mysql_fetch_object() 函式取得記錄內容 • mysql_fetch_object() 函式和mysql_fetch_array() 函式一樣,都是用來讀取記錄內容,然後將記錄指標移到下一筆,倘若讀不到記錄,會傳回FALSE,其語法如下,參數result為資源識別字: mysql_fetch_assoc(resource result) • 由於mysql_fetch_object() 函式的傳回值為object型別,記錄的每個欄位都會變成該物件的屬性,所以在讀取欄位內容時,只能使用欄位名稱。

  46. 12-6-7 移動記錄指標 PHP提供了mysql_data_seek() 函式,讓我們可以輕鬆地移動記錄指標,其語法如下: mysql_data_seek(resource result, int row_number) • 參數result:這是資源識別字。 • 參數row_number:這是記錄的序號,0表示第一筆記錄,1表示第二筆記錄,依此類推。 例如。 $row = mysql_fetch_row($result); $seek_result = mysql_data_seek($result, 9); $row = mysql_fetch_row($result);

  47. 12-7 其它功能 12-7-1 取得資料庫清單 如果想知道MySQL資料庫伺服器包含哪些資料庫,可以使用mysql_list_dbs() 函式,其語法如下,參數link_identifier為連接識別字: mysql_list_dbs([resource link_identifier]) 這個函式的傳回值為資源識別字,裡面包含一個名稱為Database的欄位,記錄數取決於資料庫的數目 。

  48. \ch12\mysql_list_dbs.php <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> <TITLE>取得資料庫清單</TITLE> </HEAD> <BODY> <?php $link = mysql_connect("localhost", "root", "mypassword"); $db_list = mysql_list_dbs($link); echo "<P>MySQL資料庫伺服器擁有以下資料庫:</P>"; while ($row = mysql_fetch_object($db_list)) echo $row->Database . "<BR>"; mysql_free_result($db_list); mysql_close($link); ?> </BODY> </HTML>

  49. 12-7-2 取得資料表清單 如果想知道某特定資料庫包含哪些資料表,可以使用mysql_list_tables() 函式,其語法如下,參數database_name為資料庫名稱,參數link_identifier為連接識別字: mysql_list_tables(string database_name [, resource link_identifier]) 這個函式的傳回值為資源識別字,裡面包含一個名稱為「Tables_in_資料庫名稱」的欄位,記錄數取決於資料表的數目 。

More Related