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。程序将保持与上述相同。