应选用mysqli(面向过程/面向对象)或pdo扩展调用查询函数:先建立连接并检查错误,再执行select语句,遍历结果后释放资源;禁用已废弃的mysql扩展,且须预处理防sql注入。

如果您在PHP开发中需要从数据库中获取数据,但不清楚如何正确调用查询函数,则可能是由于未选择适配的数据库扩展或函数调用方式错误。以下是调用数据库查询函数的具体操作步骤:
一、使用mysqli面向过程方式调用查询函数
mysqli扩展提供了面向过程和面向对象两种接口,面向过程方式适合快速脚本编写,需先建立连接再执行查询。
1、使用mysqli_connect()函数连接数据库,传入主机名、用户名、密码、数据库名参数。
2、检查连接是否成功,若mysqli_connect_error()返回非空字符串则连接失败。
立即学习“PHP免费学习笔记(深入)”;
3、调用mysqli_query()函数,传入连接资源和SQL SELECT语句字符串。
4、使用mysqli_fetch_assoc()或mysqli_fetch_array()遍历查询结果集。
5、查询结束后调用mysqli_free_result()释放结果内存,最后用mysqli_close()关闭连接。
二、使用mysqli面向对象方式调用查询函数
面向对象方式将连接、查询、结果处理封装为方法调用,代码结构更清晰,支持异常捕获与链式操作。
1、实例化mysqli类,构造函数中传入主机名、用户名、密码、数据库名。
2、检查$mysqli->connect_error属性是否为空,非空表示连接失败。
3、调用$mysqli->query()方法执行SELECT语句,返回mysqli_result对象。
4、使用$result->fetch_assoc()逐行读取关联数组格式的结果。
5、循环结束后调用$result->free()释放结果集,$mysqli对象可自动析构关闭连接。
三、使用PDO方式调用查询函数
PDO提供统一的数据访问接口,支持预处理语句防止SQL注入,适用于多数据库切换场景。
1、使用new PDO()创建实例,DSN字符串格式为"mysql:host=xxx;dbname=xxx;charset=utf8mb4"。
千博企业网站管理系统个人版免费下载、免费使用、功能无限制,完全免费拥有(请尊重开发者版权,保留首页底部版权显示):内含Flash动画源码、Access数据库程序包、SQL数据库程序包。千博企业网站管理系统个人版2012.3.19更新1.修正后台生成静态页面函数;2.增加集成环境以方便用户本地调试、体验。千博企业网站管理系统个人版:免费下载、免费使用、功能无限制。完全免费拥有(请尊重开发者版权,保留
2、设置PDO::ATTR_ERRMODE为PDO::ERRMODE_EXCEPTION以启用异常模式。
3、调用PDO::prepare()准备SQL语句,返回PDOStatement对象。
4、调用PDOStatement::execute()执行查询,支持绑定参数。
5、调用PDOStatement::fetch(PDO::FETCH_ASSOC)获取单行结果,或fetchAll()获取全部结果。
四、使用mysql扩展(已废弃,仅作兼容说明)
mysql_*系列函数自PHP 5.5.0起被标记为废弃,PHP 7.0.0后完全移除,仅用于理解历史代码逻辑,不可用于新项目。
1、调用mysql_connect()连接数据库,参数顺序为主机、用户、密码。
2、使用mysql_select_db()指定默认数据库。
3、调用mysql_query()执行SELECT语句,返回资源类型结果集。
4、使用mysql_fetch_array()读取结果,注意资源需手动释放。
5、调用mysql_close()关闭连接,且所有mysql_*函数均无错误异常机制。
五、调用查询函数时的常见错误处理方式
无论采用哪种扩展,查询执行失败时都应进行显式判断,避免静默失败导致逻辑异常。
1、mysqli_query()返回false时表示查询失败,可通过mysqli_error()获取错误信息。
2、PDO::query()在异常模式下抛出PDOException,需用try-catch捕获。
3、对空结果集应使用mysqli_num_rows()或PDOStatement::rowCount()判断行数是否为0。
4、SQL语句中含变量时,必须使用预处理+参数绑定,禁止字符串拼接。
5、查询完成后未释放结果集可能导致内存泄漏,尤其在循环中多次查询时需特别注意。










