无法在MySQL中创建准备好的语句

pat*_*rjk 0 mysql prepared-statement

我正在尝试在MySQL中创建一个准备好的语句,它接受一个参数.当我在命令行上尝试此操作时,我收到语法错误.但是,当我准备好的声明中没有变量时,我能够很好地创建它们.下面是我在MySQL命令提示符下看到的复制和粘贴:

mysql> PREPARE state_name FROM "select * from ? limit 1";
Run Code Online (Sandbox Code Playgroud)

错误1064(42000):您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法?在第1行限制1'

mysql> PREPARE state_name FROM "select * from documents limit 1";
Run Code Online (Sandbox Code Playgroud)
Query OK, 0 rows affected (0.00 sec)
Statement prepared

我正在使用的MySQL版本是5.0.77-log.

我没有看到语法错误吗?是否有任何配置参数我必须设置,以使准备好的语句工作?

Hen*_*ing 5

您不能将表名称作为预处理语句参数传递,我担心,您也不能将列传递给组或排序.您可以参数化的唯一内容是where子句或更新中的字段:

PREPARE state_name FROM "select * from documents where id = ?";

PREPARE state_name FROM "update documents set field = ? where id = ?";
Run Code Online (Sandbox Code Playgroud)