MySQL запрос в PHP дает очевидный неверный результат - PullRequest
3 голосов
/ 15 марта 2009

Я использую PHP и PHPMyAdmin для создания небольшого профиля сайта. Я даю участникам идентификационный номер, исходя из того, что это самый большой номер в базе данных, + 1

Я сделал 25 тестов, прежде чем я получил скрипт PHP, где я хотел, чтобы он был.

Затем я удалил эти 25 записей, используя PHPMyAdmin.

Но теперь, когда мой PHP-код делает это:

function getLatestID() {
    $query = "SELECT max(member_id) FROM members";
    $result = @mysql_query($query) or showError("unable to query database for user information");
    if (!($record = mysql_fetch_array($result))) return null;
    return $record[0];
}

Я получил неправильный номер.

Тестовый сценарий: таблица базы данных содержит 3 записи с идентификаторами 1, 2 и 3.

Я запускаю сеанс отладки и ставлю точку останова на возвращаемом $record[0]. Я проверяю его содержимое и вместо 3, которое является наибольшим числом, это 28.

Как и в 25 + 3 = 28, 25 записей, которые я уже удалил ...

Кто-нибудь знает, что вызывает это и как я могу это исправить?

Ответы [ 3 ]

6 голосов
/ 15 марта 2009

Это, вероятно, потому что у вас установлено auto_increment и запрос возвращает самый высокий идентификатор. Когда вы удалили другие записи, вы, вероятно, не сбросили счетчик автоматического приращения.

5 голосов
/ 15 марта 2009

Если вы используете auto_increment в MySQL, то удаление записей не уменьшит следующее значение.

Вы можете очистить таблицу с помощью TRUNCATE TABLE mytable - это сбросит значение.

3 голосов
/ 15 марта 2009

Вы также можете изменить значение, которое автоинкремент считает следующим значением для выделения:

ALTER TABLE members AUTO_INCREMENT = 3;

Обратите внимание, что если вы введете значение, которое меньше текущего максимального значения в столбце автоинкремента, оно изменит значение на MAX + 1. Чтобы увидеть текущее следующее значение, сделайте следующее:

SHOW CREATE TABLE members;

В конце определения таблицы будет показано "AUTO_INCREMENT = 26" или каково его текущее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...