2012-03-26 98 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查詢以獲取更多信息。

相關問題