Я немного не понимаю - при обновлении, вставке, удалении запросов result_metadata возвращает false? Потому что:
$meta = $stmt->result_metadata();
if($meta === false){
throw new Exception(...));
}
выдает исключение при попытке выполнить запрос на обновление, вставку или удаление. Но оно должно быть ложным только при ошибке. (из руководства php)