Mysql 教程
1. MySQL 教程 2. MySQL 安装 3. MySQL 管理 4. MySQL PHP 语法 5. MySQL 连接 6. MySQL 创建数据库 7. MySQL 删除数据库 8. MySQL 选择数据库 9. MySQL 数据类型 10. MySQL 创建数据表 11. MySQL 删除数据表 12. MySQL 插入数据 13. MySQL 查询数据 14. MySQL WHERE 子句 15. MySQL UPDATE 更新 16. MySQL DELETE 语句 17. MySQL LIKE 子句 18. MySQL 排序 19. MySQL 连接的使用 20. MySQL NULL 值处理 21. MySQL 正则表达式 22. MySQL 事务 23. MySQL ALTER命令 24. MySQL 索引 25. MySQL 临时表 26. MySQL 复制表 27. MySQL 元数据 28. MySQL 序列使用 29. MySQL 处理重复数据 30. MySQL 及 SQL 注入 31. MySQL 导出数据 32. MySQL 导入数据 33. MySQL 函数 34. MySQL 运算符

MySQL 查询数据

MySQL 查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。

语法

以下为在MySQL数据库中查询数据通用的 SELECT 语法:


SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M]

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

通过命令提示符获取数据

以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 _tbl 的数据:

实例

以下实例将返回数据表 _tbl 的所有记录:

读取数据表:

select * from _tbl;

输出结果:


使用PHP脚本来获取数据

使用 PHP 函数的 mysqli_query()SQL SELECT 命令来获取数据。

该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来使用或输出所有查询的数据。

mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

以下实例为从数据表 _tbl 中读取所有记录。

实例

尝试以下实例来显示数据表 _tbl 的所有记录。

使用 mysqli_fetch_array MYSQLI_ASSOC 参数获取数据:

<?php $dbhost = 'localhost'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT _id, _title, _author, submission_date FROM _tbl'; mysqli_select_db( $conn, '' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2> mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo "<tr><td> {$row['_id']}</td> ". "<td>{$row['_title']} </td> ". "<td>{$row['_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

以上实例中,读取的每行记录赋值给变量 $row,然后再打印出每个值。

注意:记住如果你需要在字符串中使用变量,请将变量置于花括号。

在上面的例子中,PHP mysqli_fetch_array() 函数第二个参数为 MYSQLI_ASSOC, 设置该参数查询结果返回关联数组,你可以使用字段名称来作为数组的索引。

PHP 提供了另外一个函数 mysqli_fetch_assoc(), 该函数从结果集中取得一行作为关联数组。 返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。

实例

尝试以下实例,该实例使用了 mysqli_fetch_assoc() 函数来输出数据表 _tbl 的所有记录:

使用 mysqli_fetch_assoc 获取数据:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT _id, _title, _author, submission_date FROM _tbl'; mysqli_select_db( $conn, '' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2> mysqli_fetch_assoc 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_assoc($retval)) { echo "<tr><td> {$row['_id']}</td> ". "<td>{$row['_title']} </td> ". "<td>{$row['_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

你也可以使用常量 MYSQLI_NUM 作为 PHP mysqli_fetch_array() 函数的第二个参数,返回数字数组。

实例

以下实例使用 MYSQLI_NUM 参数显示数据表 _tbl 的所有记录:

使用 mysqli_fetch_array MYSQLI_NUM 参数获取数据:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT _id, _title, _author, submission_date FROM _tbl'; mysqli_select_db( $conn, '' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2> mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

以上三个实例输出结果都一样。


内存释放

在我们执行完 SELECT 语句后,释放游标内存是一个很好的习惯。

可以通过 PHP 函数 mysqli_free_result() 来实现内存的释放。

以下实例演示了该函数的使用方法。

实例

尝试以下实例:

使用 mysqli_free_result 释放内存:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT _id, _title, _author, submission_date FROM _tbl'; mysqli_select_db( $conn, '' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2> mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; // 释放内存 mysqli_free_result($retval); mysqli_close($conn); ?>

输出结果如下所示: