Архив

Проверка multi_query в mysqli

Увидел сегодня красивое решение проверки выполнения мультизапроса в mysqli.

Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE.

Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно.

if ( $DB()->multi("
    UPDATE someshit SET bla=bla-1 WHERE id='%d';
    DELETE FROM someshit WHERE category='%d';
    DELETE FROM someshit WHERE id='%d';
    SELECT 'complete';",
    $id, $category, $id) != "complete" )
{
    self::$resultCode = self::DB_ERROR;
    return false;
}
self::$resultCode = self::SUCCESS;