diff --git a/include/class.user.php b/include/class.user.php
index 758b5ef01d2afd03f37512fe2331b5709f6adb48..97d6c52d3d3cde70a86586e104d7667dab48dfa1 100644
--- a/include/class.user.php
+++ b/include/class.user.php
@@ -457,14 +457,22 @@ class User extends UserModel {
             $users[] = $data;
         }
 
+        db_autocommit(false);
+        $error = false;
         foreach ($users as $u) {
             $vars = array_combine($keys, $u);
-            if (!static::fromVars($vars))
-                return sprintf(__('Unable to import user: %s'),
+            if (!static::fromVars($vars)) {
+                $error = sprintf(__('Unable to import user: %s'),
                     print_r($vars, true));
+                break;
+            }
         }
+        if ($error)
+            db_rollback();
+
+        db_autocommit(true);
 
-        return count($users);
+        return $error ?: count($users);
     }
 
     function importFromPost($stuff, $extra=array()) {
diff --git a/include/mysqli.php b/include/mysqli.php
index ed70cd82ef3c5fc8ae0f209759ed9c969f2ceb61..1793f889e262edb157241497f415af96c71da652 100644
--- a/include/mysqli.php
+++ b/include/mysqli.php
@@ -90,6 +90,12 @@ function db_autocommit($enable=true) {
     return $__db->autocommit($enable);
 }
 
+function db_rollback() {
+    global $__db;
+
+    return $__db->rollback();
+}
+
 function db_close() {
     global $__db;
     return @$__db->close();