nethare
Постоялец
- Регистрация
- 27 Окт 2012
- Сообщения
- 104
- Реакции
- 29
Это тоже не вариант, если максимальное значение окажется слишком большим, скажем 10 млн. будет не совсем удобно с ним работать.
Мне тут настойчиво советуют auto_increment, поэтому дополню свой вопрос:
Когда пользователь переходит на страницу заказа я должен сгенерировать уникальный ID заказа и вписать его в скрытое поле <input type='hidden' name='ornum' value='265895' /> на странице заказа.
Этот ID я передаю биллингу, когда пользователь кликает "оплатить" и попадает на сайт биллинга.
На стадии оформления заказа биллинг передаёт мне этот ID обратно в скрытый файл Result.php и, если все успешно я вписываю этот ID к себе в БД MySQL вместе с другой информацией по платежу.
Теперь вопрос, если к примеру на сайте было 20 заказов, пользователь перешел на страницу заказа, я вписал в скрытое поле следующий незанятый ID - 21. В это время заказ начали оформлять ещё 5 пользователей - им тоже вписал скрытое поле ID - 21, ведь он ещё не занят (биллинг не обращался на Result.php и в БД этот ID не вписан). В результате я получу ситуацию когда в какой то момент пользователь оформлявший заказ, завершил его вписав ID 21 в БД. А следующий сразу за ним другой пользователь, тоже получивший ID 21 будет пытаться вписать в БД дублирующую запись и получит ошибку, если поле будет, как мне советуют auto_increment.
И снова про AUTO_INCREMENT.
Сначала добавляйте заказ в базу, а потом обновляйте его. Так сделано в 95% скриптов интернет-магазинов.