PHP MySQL Select max number из строки возвращает неправильный номер

У меня есть база данных с таблицей «клиент». В этой строке большинство клиентов имеют значение или число. Я пытаюсь получить наибольшее число, поэтому следующий, кто зарегистрируется, получит highest number + 1, Ряд 'usr' is varchar(255),

Он работал со следующим кодом:

$query = "SELECT MAX(usr) AS usr FROM customer";
$result = mysql_query($query);
$record = mysql_fetch_assoc($result);
$maxID   = $record['id'];
$nieuwID = $maxID + 1;

Когда я проверил сегодня, я увидел, что оба последних регистра имели номер 10. Когда я проверил мой запрос, он возвращал 9. Почему он возвращает 9, а не 10? Как я могу это исправить, чтобы у моих регистров был уникальный номер?

0

Решение

usr должен быть целым числом. изменить структуру поля таблицы

2

Другие решения

Не храните числа как строки символов. Вы получаете максимум строки. Для максимального числа преобразуйте его в число:

select max(usr + 0) as usr
from customer

Но, как рекомендуется в комментарии, если вы хотите автоинкрементное поле, используйте auto_increment и определите столбец как истинное число.

0

Вы не можете использовать MAX() с varchar поле. если вы хотите использовать MAX (), вы должны преобразовать это поле в integer вместо varchar,

Любая операция, требующая сложения, вычитания, avg, max и т. Д., Не будет работать с типом поля varchar.

0

Хорошо, во-первых, @DeDevelopers прав, auto_incroment должен быть проинформирован, чтобы это не происходило.

Я настоятельно рекомендую использовать это в операторе вставки или обновления, так как даже если вероятность дубликатов мала, это может произойти;)

Я также рекомендовал бы повторно посетить архитектуру вашей таблицы, чтобы поддержать комментарий @DeDevelopers, но если нет, то поместите некоторую проверку ошибок или уникальный идентификатор ключа для этого столбца таблицы.

0
По вопросам рекламы [email protected]