首页 > 解决方案 > 带有多个变量的mysql准备语句

问题描述

使用一个变量不会给我一个错误。有两个变量它给了我一个语法错误。

set @a= '...';
set @b = '...';

PREPARE stm1 FROM 
    'SELECT *
    FROM ?
    WHERE username = ?';

EXECUTE stm1 USING @a, @b;
Error Code: 1064. You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near '?  WHERE username = ?' at line 2

其他问题没有帮助。

谢谢

标签: mysqlmysql-workbench

解决方案


您不能使用参数作为表名。您必须使用连接来替换表的变量。

PREPARE stm1 FROM CONCAT(
    'SELECT *
    FROM `', @a, '`
    WHERE username = ?');
EXECUTE stmt1 USING @b;

推荐阅读