繁体   English   中英

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

[英]PHP ADOdb, How to test if query is “insert, update, delete, or drop”?

MySQL / i的$db->query('some query')将为成功的SELECTSHOWDESCRIBEEXPLAIN返回一个结果集,或者为成功的INSERTUPDATEDELETEDROP返回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函数吗?

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

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

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

您可以使用受影响的行()方法

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM