@phenomen31

Проверка на пропущенный id mysql php?

Имеется таблица general в ней A_I отключено так как при удалении какого-либо поля пропускается id. Например если в базе есть id 1 2 3 4 5 6 , я удаляю поле с id 4, то при следующей записи я получу запись с id 7, а значения с id 4 нет. Мне это не нравится, это не красиво. И чтобы заполнять промежутки я написал сравнение maxid(максимального id) с count (общим количеством записей) и если они равны то id(новой записи) = ++maxid (и это работает),
ну а если не равны то у меня цикл.
else {
  $mysql = mysql_query("SELECT id AS id FROM general WHERE id LIKE 1");
  $row = mysql_fetch_assoc($mysql);
  $newid = $row[id];
   while (isset($newid)){
    $newid = ++$newid;
    $mysql = mysql_query("SELECT id FROM general WHERE id LIKE $newid");
    $row = mysql_fetch_assoc($mysql);
    $newid = $row[id];
    echo $newid;  //тут у меня выводит 2,3
  }
   echo $newid; //а тут уже ничего не выводит, почему? как исправить?
}
  • Вопрос задан
  • 536 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Отсутствие базовых знаний detected!
1. Читать тут, потом не тупить и сделать правильно. Для особо упертых - A_I гарантирует вставку уникального идентификатора независимо от количества одновременно записываемых сессий, а так же позволяет четко и однозначно привязать объекты с разных таблиц(в частности возвращаемым sql сервером значением LAST_INSERT_ID()).
2.
$newid = $row[id];
на самом деле скорее всего $newid = $row["id"]; Так ваш велосипед поедет, хотя его квадратные колеса Вам еще долго будут аукаться на собственном седалище.

С наилучшими пожеланиями, учите свою область внимательно, думайте почему так уже написано и почему местами не нужны костыли, а есть готовые верные решения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Мне это не нравится, это не красиво. Кто такое сказал что не красиво? Включите ai и не нужно изобретать велосипед.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы