我正在寫一個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查詢以獲取更多信息。