query()和exec()在php中操作数据库的区别
在PHP中,query() 和 exec() 是用于执行SQL语句的两种不同方法,它们主要在用途、返回值和处理方式上有所不同。以下是对这两个方法的详细比较:
- 用途
query():主要用于执行返回结果集的SQL查询,例如 SELECT 语句。它也可以用于执行不返回结果集但影响数据库结构的语句(如 INSERT、UPDATE、DELETE),但此时通常更关注影响的行数。
exec():主要用于执行不返回结果集的SQL语句,例如 INSERT、UPDATE、DELETE 以及DDL(数据定义语言)语句,如 CREATE TABLE、ALTER TABLE 等。 - 返回值
query():
对于 SELECT 语句,返回的是一个 mysqli_result 对象,可以通过这个对象来遍历查询结果。
对于 INSERT、UPDATE、DELETE 语句,返回的是受影响的行数。
exec():
总是返回受影响的行数,不返回结果集。 - 错误处理
query():如果SQL语句执行失败,query() 方法会返回 FALSE。你可以通过检查返回值是否为 FALSE 来判断语句是否执行成功。
exec():同样地,如果SQL语句执行失败,exec() 方法也会返回 FALSE。 - 多语句执行
query():默认情况下不支持一次性执行多条SQL语句(除非启用了多语句支持,通过 mysqli_options($mysqli, MYSQLI_OPT_MULTI_QUERIES, true))。
exec():通常用于执行单条SQL语句,但也可以与多语句支持一起使用(同样需要启用多语句支持)。 - 适用场景
query():更适用于需要处理结果集的查询,如 SELECT 语句,也适用于需要知道受影响行数的非查询语句。
exec():更适用于不需要处理结果集的语句,如 INSERT、UPDATE、DELETE 和DDL语句。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验