mysql — PHP ADOdb, как проверить, является ли запрос & quot; вставкой, обновлением, удалением или удалением & quot ;?

MySQL / I, $db->query('some query') вернет набор результатов для успешный SELECT, SHOW, DESCRIBE или же EXPLAIN, или вернуться true за успешный INSERT, UPDATE, DELETE, DROP, так далее.

Таким образом, мы можем легко определить «тип» запроса:

$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, чтобы сделать это?

1

Решение

ADOdb возвращает пустой объект набора записей когда базовый API вызывается в специфичном для БД драйвере для выполнения запроса, возвращается true,

По умолчанию это означает ADORecordSet_empty объект, но это может отличаться, если используются пользовательские классы записей (настройка rsPrefix).

Другими словами, я не думаю, что есть какой-то другой способ достичь того, чего вы хотите; Вы можете сделать код более переносимым, сравнивая с $db->rsPrefix . 'empty' вместо жесткого кодирования 'ADORecordSet_empty',

0

Другие решения

Вы можете использовать метод disabled_rows ()

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

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

0

По вопросам рекламы [email protected]