Loading...
Лара (6 сен 2023, в 12:28)
просто insert into, он не пройдет, потому что, такой ид в бд есть, если ты пометишь колонку в бд primary key
do {// сгенерировал id}while(проверил) insert отправил
Вопрос стоит в том как while выполнить чтобы без ошибок ?
________
посл. ред. 06.09.2023 в 12:31; всего 1 раз(а); by SNEG
SNEG , если колонка primary key / unique, тебе sql кинет ошибку, обработать ошибку в php можно так https://www.php.net/manual/ru/language.exceptions.php
Лара (6 сен 2023, в 12:34)
SNEG , если колонка primary key / unique, тебе sql кинет ошибку, обработать ошибку в php можно так https://www.php.net/manual/ru/language.exceptions.php
Мне не ошибку нужно обработать а 100% получить новый id
________
посл. ред. 06.09.2023 в 12:37; всего 1 раз(а); by SNEG
SNEG , или так, но это такой себе вариант
php
   $connection = mysqli_connect($host, $user, $password, $db_name);        if(!$connection){ // проверка правильности подключения          echo 'Ошибка соединения: ' . mysqli_connect_error() . '<br>';          echo 'Код ошибки: ' . mysqli_connect_errno();       }else{ // подключение успешно установлено           // текст SQL запроса, который будет передан базе             $query = 'SELECT * FROM `USERS`';           // выполняем запрос к базе данных             $result = mysqli_query($connection, $query);              if(!$result){ // запрос завершился ошибкой                echo 'Ошибка запроса: ' . mysqli_error($connection) . '<br>';                echo 'Код ошибки: ' . mysqli_errno($connection);             }else{ // запрос успешно выполнился                while($row = $result->fetch_assoc()){                   // обрабатываем полученные данные                }             }          // закрываем соединение с базой             mysqli_close($connection);       }   
SNEG (6 сен 2023, в 12:35)
Мне не ошибку нужно обработать а 100% получить новый id
получил ошибку от sql, обработал ее и сгенерировал новый ид
А что мешает добавлять к такой записи временную метку и быть точно уверенным в ид ?🤔
А лучше всего если не планируются миллионы записей забить на это и попросить повторить попытку сгенерировав новый ид
Scammer (6 сен 2023, в 12:41)
А что мешает добавлять к такой записи временную метку и быть точно уверенным в ид ?🤔
А лучше всего если не планируются миллионы записей забить на это и попросить повторить попытку сгенерировав новый ид
Мешает , могбы проще каждому id присвоить ai и уникальный ключ а так нужно сгенерировать id самому без всяких а что мешает а давайте добавим, и проверить или такой id существует, если существует перегенировать не останавливая работу скрипта и вставить новый свободный в бд
________
посл. ред. 06.09.2023 в 12:53; всего 1 раз(а); by SNEG
Вопрос всё ещё актуален , только без а может а давайте добавим а что мешает
________
посл. ред. 06.09.2023 в 13:05; всего 1 раз(а); by SNEG
Делаешь "LOCK TABLES users WRITE"
С помощью do-while генеришь id и проверяешь существование его наличие в базе, если есть - генеришь заново, ну ты в курсе как это делается
Делаешь "INSERT..."
Делаешь "UNLOCK TABLES"
________
посл. ред. 06.09.2023 в 13:32; всего 1 раз(а); by Something
SNEG (6 сен 2023, в 12:52)
Мешает , могбы проще каждому id присвоить ai и уникальный ключ а так нужно сгенерировать id самому без всяких а что мешает а давайте добавим, и проверить или такой id существует, если существует перегенировать не останавливая работу скрипта и вставить новый свободный в бд
Причём тут AI?если в эту айдишку вшить метку времени то шанс того что твой хеш + метка времени совпадает близится к нулю. А так твоё решение с циклом плюс это внутри транзакции сделать дабы избежать колизии
Онлайн: 3
Время:
Gen. 0.1213
(c) Bym.Guru 2010-2026