добавление параметров в предложение LIMIT для SELECT - PullRequest
0 голосов
/ 11 января 2010

У меня есть следующее подготовленное утверждение:

$sql =
     "PREPARE stmt_name FROM 
    'SELECT I.item_id, I.name , I.price, I.discounted_price, I.thumbnail_photo
    FROM item I
    JOIN sub_category SC
    ON I.sub_category_id = SC.sub_category_id
    JOIN category C
    ON C.category_id = SC.category_id
    WHERE C.category_id = ?
    LIMIT ?,? ' ; 

    SET @p1 = categoryId;
    SET @p2 = firstItem;
    SET @p3 = items_per_page;

    EXECUTE stmt_name USING @p1,@p2,@p3; "

который я изменил на следующее (без использования подготовленного оператора)

$sql =

    'SELECT I.item_id, I.name , I.price, I.discounted_price, I.thumbnail_photo
    FROM item I
    JOIN sub_category SC
    ON I.sub_category_id = SC.sub_category_id
    JOIN category C
    ON C.category_id = SC.category_id
    WHERE C.category_id =' . (int)$categoryId;

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 января 2010

Похоже, что вы используете конкатенацию, а не параметры, для создания нового запроса SELECT. Если вы хотите продолжить этот путь, просто добавьте свой код:

. ' LIMIT ' . (int)$start . ', ' . (int)$number;

Если вы предпочитаете использовать параметризованный запрос, вам нужно использовать встроенные в PHP PDO или mysqli расширения или выбрать уровень абстракции с поддержкой параметризованного запросы, такие как ADOdb . Параметризованные запросы часто рассматриваются как более безопасные и чистые, чем просто создание запросов с помощью конкатенации строк.

0 голосов
/ 11 января 2010

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

$sql='SELECT I.item_id, I.name , I.price, I.discounted_price, I.thumbnail_photo
    FROM item I
    JOIN sub_category SC
    ON I.sub_category_id = SC.sub_category_id
    JOIN category C
    ON C.category_id = SC.category_id
    WHERE C.category_id =' . (int)$categoryId.' LIMIT '.(int)$start.','.(int)$limit;

http://dev.mysql.com/doc/refman/5.1/en/select.html

0 голосов
/ 11 января 2010

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

Итак, добавьте ПРЕДЕЛ.Почему подготовленное заявление допускает только ОГРАНИЧЕНИЯ?Это конструкция SQL, а не конструкция PHP.

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