1

MySQL/i$db->query('some query')将返回成功SELECTSHOWDESCRIBEEXPLAIN的结果集返回成功true,,,,INSERTUPDATEDELETEDROP

因此,我们可以轻松识别查询的“类型”:

$result = $db->query('some query that we want to identify');

if($result === false){
    echo 'Error'; exit;
}

if($result === true){

    // query is a successful INSERT, UPDATE, DELETE, DROP, etc.

}else{ // else type of $result will be result set

    // query is a successful  SELECT, SHOW, DESCRIBE, EXPLAIN 

}

我们如何使用PHP ADOdb完成上述操作?

我目前正在使用:

$result = $db->Execute('some query');

if($result === false){
    echo 'Error'; exit;
}
if(get_class($result) === 'ADORecordSet_empty'){
    // query is a successful INSERT, UPDATE, DELETE, DROP, etc?
}else{
    // query is a successful  SELECT, SHOW, DESCRIBE, EXPLAIN ?
}

似乎可行,但它确实感觉很脆弱并且“与 API 对抗”。有更好的方法吗?

是否有内置的 ADOdb 函数可以做到这一点?

4

2 回答 2

0

您可以使用affected_rows() 方法

if ($DB->affected_rows() !== 0) {
 //true
}

http://devcodepro.com/view/70/1/ADOdb-Check-if-MySQL-query-executed-successfully

于 2018-06-09T09:43:23.170 回答
0

当在特定于 DB 的驱动程序中调用以执行查询的底层 API 返回时,ADOdb 返回一个空的记录集对象true

默认情况下,这意味着一个对象,但如果正在使用自定义记录集类(设置rsPrefixADORecordSet_empty,这可能会有所不同。

换句话说,我认为没有其他方法可以实现您想要的。您可以通过比较$db->rsPrefix . 'empty'而不是硬编码来使代码更具可移植性'ADORecordSet_empty'

于 2015-11-30T17:00:30.980 回答