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, чтобы сделать это?
ADOdb возвращает пустой объект набора записей когда базовый API вызывается в специфичном для БД драйвере для выполнения запроса, возвращается true
,
По умолчанию это означает ADORecordSet_empty
объект, но это может отличаться, если используются пользовательские классы записей (настройка rsPrefix).
Другими словами, я не думаю, что есть какой-то другой способ достичь того, чего вы хотите; Вы можете сделать код более переносимым, сравнивая с $db->rsPrefix . 'empty'
вместо жесткого кодирования 'ADORecordSet_empty'
,
Вы можете использовать метод disabled_rows ()
if ($DB->affected_rows() !== 0) {
//true
}
http://devcodepro.com/view/70/1/ADOdb-Check-if-MySQL-query-executed-successfully