2012-03-26 40 views
2

我正在写一个PHP的类来处理MySQLI查询,并且当查询管理而不是返回结果集(或对象)我想发出有用的错误消息。但是,当然,并非所有查询都设计为返回结果集(例如ALTER),所以我想过滤掉那些没有的查询。按定义MYSQL命令是做什么*不*返回结果?

据我估计,这可能会或可能不会返回结果集的查询是:

  • 选择
  • SHOW
  • CREATE VIEW

......和所有其他(例如ALTER)不返回结果。但是我忽略了什么?什么是从不返回结果的查询命令,以及查询命令可能返回结果还是不返回结果?

非常感谢!

回答

4

从PHP手册mysqli::query

返回值

失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。

我建议只检查返回值等于假(=== false),做一些与mysqli_errnomysqli_error如果它是。实际解析查询字符串是过度的。

如果您必须知道它是结果集还是布尔值,请检查返回类型为is_bool($result)$result instanceof mysqli_result

0

有两种基本类型:

  1. 那些返回结果集 - 它可能从空集有所不同数据
  2. 那些受影响的返回行数的巨量。

也有三种类型的查询:

  1. DML - 查询操纵数据 - 选择,插入,更新,删除。
  2. DDL - 查询找出数据模式 - 创建表/图等
  3. 控制查询 - 授予或撤销权限

我想控制查询通常返回任何结果和DDL查询,如创建/修改/套也没有返回。 SELECT返回结果集(可能为空)。 INSERT/UPDATE/DELETE返回受影响的行数。

我建议阅读SQL查询以获取更多信息。

相关问题