Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > limit не работает с кавычками


Автор: begin 10.10.2007, 22:00
Есть вот такой запрос:
Код

$query="select `id` from `files` where `category`='$id' limit '$g_col'";

Так вот он не работал, пока я не убрал одинарные кавычки вокруг $g_col
Не пойму, ведь с кавычками было бы идеально правильно (пусть и не обязательно)

Автор: SelenIT 10.10.2007, 22:29
Нет, неправильно.

В кавычки можно брать данные (действительно любые, тут MySQL действительно автоматом приведет их к нужному для соотв. столбца типу), но не управляющие параметры, к которым относится LIMIT. LIMIT работает только с числами. Поэтому для подстановки параметров LIMIT-а из данных, пришедших от юзера, нужно обязательно использовать intval.

Автор: begin 10.10.2007, 22:54
Значит, насколько я понял, управляющие параметры в кавычки брать нельзя.
Вот еще вопрос в тему:
вот так не работает:
Код

$query="update `files` set `comments`=`comments`+1 where `id`='$file'";

а так работает:
Код

$query="update `files` set comments=comments+1 where `id`='$file'";

Тоже из-за этого?

Автор: SelenIT 10.10.2007, 23:13
Странно, по идее должны оба работать. Что за ошибку выдает mysql_error в первом случае?
А какой тип у поля comments?

Автор: begin 11.10.2007, 00:24
База не выдает ошибку, просто значение поля не приращивается на единицу, а остается неизменным.
У поля comments тип SMALLINT

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)