PHP ADOdb,如何测试查询是否是"插入,更新,删除或删除"?

时间:2015-04-06 13:00:19

标签: php mysql adodb-php

MySQL /我$db->query('some query')将返回successful SELECT, SHOW, DESCRIBE or EXPLAIN的结果集,或successful INSERT, UPDATE, DELETE, DROP, etc返回true

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

$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函数来执行此操作?

2 个答案:

答案 0 :(得分:0)

ADOdb returns an empty recordset object当在特定于DB的驱动程序中调用的基础API执行查询时返回true

默认情况下,这意味着ADORecordSet_empty对象,但如果使用自定义记录集类(设置rsPrefix),则可能会有所不同。

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

答案 1 :(得分:0)

您可以使用affected_rows()方法

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

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