從 MySQL 資料庫獲取資料



可以透過 PHP 函式 `mysql_query` 執行 SQL SELECT 語句來從 MySQL 表中獲取資料。您有幾種從 MySQL 獲取資料的方法。

最常用的方法是使用函式 `mysql_fetch_array()`。此函式將行作為關聯陣列、數字陣列或兩者都返回。如果不再有行,則此函式返回 FALSE。

下面是一個從 `employee` 表中獲取記錄的簡單示例。

示例

嘗試以下示例以顯示 `employee` 表中的所有記錄。

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "EMP ID :{$row['emp_id']}  <br> ".
         "EMP NAME : {$row['emp_name']} <br> ".
         "EMP SALARY : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

行的內容被賦值給變數 `$row`,然後列印行中的值。

注意 − 當您想直接將陣列值插入字串時,請務必使用花括號。

在上面的示例中,常量 `MYSQL_ASSOC` 用作 `mysql_fetch_array()` 的第二個引數,以便它將行作為關聯陣列返回。使用關聯陣列,您可以使用欄位名稱而不是索引來訪問欄位。

PHP 提供了另一個名為 `mysql_fetch_assoc()` 的函式,它也返回行作為關聯陣列。

示例

嘗試以下示例,使用 `mysql_fetch_assoc()` 函式顯示 `employee` 表中的所有記錄。

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      echo "EMP ID :{$row['emp_id']}  <br> ".
         "EMP NAME : {$row['emp_name']} <br> ".
         "EMP SALARY : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

您還可以使用常量 `MYSQL_NUM` 作為 `mysql_fetch_array()` 的第二個引數。這將導致函式返回一個帶有數字索引的陣列。

示例

嘗試以下示例,使用 `MYSQL_NUM` 引數顯示 `employee` 表中的所有記錄。

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "EMP ID :{$row[0]}  <br> ".
         "EMP NAME : {$row[1]} <br> ".
         "EMP SALARY : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

以上三個示例將產生相同的結果。

釋放記憶體

最好在每個 SELECT 語句結束時釋放遊標記憶體。這可以透過使用 PHP 函式 `mysql_free_result()` 來完成。以下是如何使用它的示例。

示例

嘗試以下示例

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "EMP ID :{$row[0]}  <br> ".
         "EMP NAME : {$row[1]} <br> ".
         "EMP SALARY : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

在獲取資料時,您可以編寫任意複雜的 SQL 語句。過程與上面提到的相同。

php_and_mysql.htm
廣告