0

这是参数

IN `_user_id` VARCHAR(50), 
IN `_page` INT, 
IN `_sort_type` VARCHAR(50), 
IN `_order_type` VARCHAR(50)

这是程序

BEGIN

if _page < 0 then
    set _page = 0;
end if;

if _sort_type='idx' then
    set _sort_type = '__idx';
end if;


PREPARE STMT FROM
"
select idx, trash, publisher_user_id as user_id
from n_board 
where publisher_user_id = ?
order by ? desc LIMIT ?,?";
SET @publisher_user_id = _user_id;
SET @sort_type = _sort_type;
SET @order_type = _order_type;
SET @START = _page*4;
SET @END = 4;
EXECUTE STMT USING @publisher_user_id, @sort_type, @START, @END;
END

这是我的代码的一部分。由于限制变量,我制作了这段代码。我听说 MYSQL 5.5 支持这样的代码“限制变量,变量”。这是对的吗?我正在使用 5.0.77。

我希望像这样使用 order by 和 sort 类型:

'order by ? ? LIMIT ?,?'

但这不起作用。

select no from n_board where id = ? order by ? ? LIMIT ?,?";-> 语法错误

select no from n_board where id = ? order by ? desc LIMIT ?,?";

-> 我得到了结果,但是'order by desc'没有任何效果。

我能做些什么?

4

1 回答 1

0

尽量不要将@LIMIT 用作变量,因为它是保留字,可能会让人感到不安。

于 2011-04-04T16:50:52.760 回答