Или же добавить какой то свой функционал используя существующий.
Ну и еще вот пример:
$result = $mysqli->query("SELECT * FROM `test`");
while ($data[] = $result->fetch_assoc());
$result1 = $mysqli->query("SELECT * FROM `test1`");
// при осуществлении второго запроса вылетит ошибка
// Commands out of sync; you can't run this command now
// Что бы ее избежать нужно вставить перед запросом $result->free();
// Или передать вторым параметром в query() (в первом запросе) MYSQLI_USE_RESULTДля того что бы не писать по сто раз MYSQLI_USE_RESULT или $result->free();
Можно переопределить функцию query() и сделать значение второго параметра по умолчанию MYSQLI_USE_RESULT
для этого как раз и понадобится обертка.