1

MySQL/iは、 、または成功した場合$db->query('some query')に結果セットを返すかなどの場合に戻ります。SELECTSHOWDESCRIBEEXPLAINtrueINSERTUPDATEDELETEDROP

そのため、クエリの「タイプ」を簡単に識別できます。

$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

ADOdb は、クエリを実行するために DB 固有のドライバーで呼び出された基になる APIが を返したときに、空のレコードセット オブジェクトtrueを返します。

デフォルトでは、これはオブジェクトを意味しますが、カスタム レコードセット クラスが使用されている ( rsPrefixADORecordSet_emptyを設定している) 場合、これは異なる場合があります。

言い換えれば、あなたが望むものを達成する他の方法はないと思います。$db->rsPrefix . 'empty'ハードコーディングの代わりに比較することで、コードの移植性を高めることができます'ADORecordSet_empty'

于 2015-11-30T17:00:30.980 に答える