Php 向SELECT的LIMIT子句添加参数

Php 向SELECT的LIMIT子句添加参数,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我准备了以下声明: $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

我准备了以下声明:

$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; "
我将其更改为以下内容(不使用准备好的语句)

我想向LIMIT子句添加参数 我浏览了一些网站,似乎只有使用准备好的语句才能在select语句的LIMIT子句中添加参数。我能听听你的意见和建议吗

谢谢

我想将参数添加到限制 我浏览了一些网站, 而且,似乎向 select语句中的LIMIT子句 只能使用准备好的 声明


所以加上限制。为什么准备好的声明只允许限制?这是一个SQL构造而不是PHP构造。

看起来您正在使用连接而不是参数来构建新的SELECT查询。如果您想继续沿着这条路走下去,只需在代码中附加以下内容:

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

如果希望使用参数化查询,则需要使用PHP的内置或扩展,或者选择支持参数化查询的抽象层,例如。参数化查询通常被认为比简单地通过字符串连接构建查询更安全、更简洁。

您不必使用准备好的语句来使用limit。只要加上限制。。。 比如说

$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;

只是好奇,为什么不使用PDO?你不需要手工准备语句,我不知道如何使用PDO。你能给我发个链接吗?
$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;