PHP 获取 MySQL 数据库的数据


PHP 函数 mysql_query 执行 SQL SELECT 语句,从 MySQL 表中获取数据。您可以通过多种方式从 MySQL 获取数据。

最常用选项是使用函数 mysql_fetch_array()。此函数以关联数组和/或数值数组的形式返回 row。如果没有更多行,此函数返回 FALSE

下面是一个从 employee 表中获取记录的简单示例。

例子

尝试以下示例来显示 employee 表中的所有记录。


<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('无法连接: ' . 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('无法获取数据: ' . 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 "已成功获取数据\n";
   
   mysql_close($conn);
?>

将行的内容分配给变量 $row 然后打印 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('无法连接: ' . 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('无法获取数据: ' . 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 "已成功获取数据\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('无法连接: ' . 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('无法获取数据: ' . 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 "已成功获取数据\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('无法连接: ' . 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('无法获取数据: ' . 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 "已成功获取数据\n";
   
   mysql_close($conn);
?>

在获取数据时,您可以根据需要编写复杂的 SQL。程序将保持与上述相同。