从 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
广告