我有以下准备好的声明:
$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子句中添加参数 我已经浏览了一些网站,似乎只能通过使用预准备语句在select语句中向LIMIT子句添加参数。我可以提出您的意见和建议吗?
谢谢!
答案 0 :(得分:1)
看起来您正在使用连接而不是参数来构建新的SELECT查询。如果您想继续沿着这条路前进,那么您只需附加代码:
. ' LIMIT ' . (int)$start . ', ' . (int)$number;
如果您更喜欢使用参数化查询,则需要使用PHP的内置PDO或mysqli扩展,或者选择支持参数化查询的抽象层,例如{ {3}}。参数化查询通常被视为比通过字符串连接构建查询更安全,更清晰。
答案 1 :(得分:0)
我想在LIMIT中添加参数 条款我去过一些网站, 似乎添加参数 select语句中的LIMIT子句 只能用准备好的方法来完成 语句。
所以添加LIMIT。为什么准备好的声明只允许LIMITS?它是一个SQL结构而不是PHP结构。
答案 2 :(得分:0)
您不必使用预准备语句来使用限制。只需添加限制... 例如
$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;