我正在写一个PHP的类来处理MySQLI查询,并且当查询管理而不是返回结果集(或对象)我想发出有用的错误消息。但是,当然,并非所有查询都设计为返回结果集(例如ALTER),所以我想过滤掉那些没有的查询。按定义MYSQL命令是做什么*不*返回结果?
据我估计,这可能会或可能不会返回结果集的查询是:
- 选择
- SHOW
- CREATE VIEW
......和所有其他(例如ALTER)不返回结果。但是我忽略了什么?什么是从不返回结果的查询命令,以及查询命令可能返回结果还是不返回结果?
非常感谢!
我正在写一个PHP的类来处理MySQLI查询,并且当查询管理而不是返回结果集(或对象)我想发出有用的错误消息。但是,当然,并非所有查询都设计为返回结果集(例如ALTER),所以我想过滤掉那些没有的查询。按定义MYSQL命令是做什么*不*返回结果?
据我估计,这可能会或可能不会返回结果集的查询是:
......和所有其他(例如ALTER)不返回结果。但是我忽略了什么?什么是从不返回结果的查询命令,以及查询命令可能返回结果还是不返回结果?
非常感谢!
从PHP手册mysqli::query
返回值
失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。
我建议只检查返回值等于假(=== false
),做一些与mysqli_errno或mysqli_error如果它是。实际解析查询字符串是过度的。
如果您必须知道它是结果集还是布尔值,请检查返回类型为is_bool($result)
或$result instanceof mysqli_result
。
有两种基本类型:
也有三种类型的查询:
我想控制查询通常返回任何结果和DDL查询,如创建/修改/套也没有返回。 SELECT返回结果集(可能为空)。 INSERT/UPDATE/DELETE返回受影响的行数。
我建议阅读SQL查询以获取更多信息。