Проблема в том, что $ db-> query () не останавливает выполнение сценария php, если запрос завершается неудачей. Нормальное выполнение программы будет продолжено.
Вам остается проверить, был ли запрос успешным или нет
Вот пример кода для этого
if($db->affected_rows == -1)
{
echo 'query fialed';
echo $db->error;
}
else {
echo 'query was ok';
}
Ps. Чтобы автоматически остановить выполнение страницы в случае сбоя запроса, вы можете использовать
mysqli_query($db, $query) or die("Error" . mysqli_error($db));