Запрос не будет возвращать данные, если входные данные являются двузначными, php / mysql

У меня такой запрос ...

$levLimit = $_GET['levLimit'];

$sql = "SELECT * FROM users WHERE `level` < '$levLimit'";

Это отлично работает, когда levLimit равен любому числу до 9, как только я пробую его с 10, он ничего не возвращает.

Это не дает мне никаких ошибок mysql или php, есть ли что-нибудь явно очевидное?

какова длина и тип столбца? а сколько там записей?

Funk Forty Niner 31.10.2018 14:02

Его 'varchar' и 255

Liam 31.10.2018 14:03

вам нужно либо преобразовать его, либо изменить его тип на тот, который может выполнять математические вычисления. Я также отредактировал свой комментарий выше, спрашивая, сколько там записей.

Funk Forty Niner 31.10.2018 14:03

там также 19 записей

Liam 31.10.2018 14:05

хорошо спасибо. Кажется, что первая часть моего 2-го комментария - это то, что вам нужно сделать. MySQL не может выполнять математические вычисления с текстом, только с целыми числами.

Funk Forty Niner 31.10.2018 14:06

Добро пожаловать. Не возражаете, если я отправлю ответ, чтобы мы могли его закрыть?

Funk Forty Niner 31.10.2018 14:06

Надеюсь, мне не придется говорить с вами об инъекциях ...

Lithilion 31.10.2018 14:07
1
7
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно либо преобразовать его (немного неудобно), либо изменить тип столбца на тот, который может выполнять математику.

MySQL не может выполнять вычисления с текстом так, как вы сейчас пытаетесь запросить, только целые числа.

Осторожность: Ваш код открыт для SQL-инъекций. Пожалуйста, используйте для этого подготовленное заявление.

Использованная литература:

Вы также можете использовать (int) для значения массива GET:

$levLimit = (int)$_GET['levLimit'];

для чего не потребуется подготовленный оператор, но всегда лучше, чтобы вы это сделали.


Редактировать:

"This doesn't give me any mysql or php errors neither."

Это потому, что вы заключили переменную в одинарные кавычки в запросе, который MySQL считывает как строку, и вы говорите, что тип столбца - VARCHAR.

  • Если бы вы нет использовали одинарные кавычки вокруг переменной, это привело бы к ошибке.

Другие вопросы по теме