Склеивание через джойны не поможет,ну да, джоины для слабаков! Их придумали дураки для других дураков.
так как у вас результат в виде ID получается сугубо по результатам очередного запроса, то вся байда будет стоять и ждать - лучше, если эта байда будет ждать в приложении (PHP), нежели вся байда будет висеть в памяти MySQL в ожидании...Какое ожидание? При настроенных индексах весь запрос выполнится от 0,001 до 0,1 секунды, в зависимости от объема данных и мощности сервера(если не брать крайние случаи типа мертвый сервер/сто миллионов записей на таблицу).
Хорошим решением будет сохранять корзину у пользователя в localStorage?приемлемым, если вы не собираетесь привязывать пользователя к системе и не имеете цели отслеживать его заказы/покупки с целью предоставления скидок/бонусов по накоплению покупок или чего-то подобного.
честно говоря не понял о чём вы (охранять на беке)Сохранять на бэке - хранить на стороне сервера, а не клиента, клиент может на своей стороне делать с данными любые манипуляции. Это не всегда удобно/безопасно. По этому хранение на "бэке" считается более контролируемым. Читайте про механизмы сессий. Кроме того - на сервере манипуляции с данными производить легче, например достаточно иметь id объекта и вытащить из базы все данные о нем, на фронте же необходимо на каждый объект иметь все данные о нем прямо в DOM объектах, что не красиво, не безопасно, несет серьезный оверхэд кода и не всегда удобно.
$bd_insert_query = "INSERT INTO " . DB_TABLE . " (mailbox) VALUES ('" . $MailBox . "')";
var_dump($bd_insert_query); // копируем и вставляем в базу руками, смотрим ответ, возможно понимаем что запрос кривой.
$result = mysqli_query($bd_link, $bd_insert_query);
var_dump($result); // смотрим что на самом деле произошло в запросе.