mysql подготовленных операторов с несколькими переменными - PullRequest
0 голосов
/ 05 августа 2020

Использование одной переменной не дает мне ошибки. с двумя переменными это дает мне синтаксическую ошибку.

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

другие вопросы не помогли.

спасибо

1 Ответ

2 голосов
/ 05 августа 2020

Вы не можете использовать параметр для имени таблицы. Вы должны использовать конкатенацию для замены переменной в таблице.

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