Php MySQL变量(USE语句)

Php MySQL变量(USE语句),php,mysql,database,linux,Php,Mysql,Database,Linux,我已经设置了MySQL变量: SET @test = 'my_db'; select @test; 然后 或 在MySQL中如何将变量值与use语句一起使用?变量不能用作MySQL中的标识符。您正在寻找MySQL不支持的宏扩展 用户变量旨在提供数据值。它们不能直接在SQL语句中用作标识符或标识符的一部分,例如在需要表或数据库名称的上下文中,或用作保留字,如SELECT 从 对于某些语句,例如SELECT,可以通过使用准备好的语句来解决这个问题,但是您不能准备USE语句,因此在这种情况下,您不

我已经设置了MySQL变量:

SET @test = 'my_db';
select @test; 
然后


在MySQL中如何将变量值与use语句一起使用?

变量不能用作MySQL中的标识符。您正在寻找MySQL不支持的宏扩展

用户变量旨在提供数据值。它们不能直接在SQL语句中用作标识符或标识符的一部分,例如在需要表或数据库名称的上下文中,或用作保留字,如SELECT

对于某些语句,例如
SELECT
,可以通过使用准备好的语句来解决这个问题,但是您不能准备
USE
语句,因此在这种情况下,您不可以选择它


您必须使用
mysqli\u select\u db($test)
或执行
mysqli\u query(“USE$test”)等查询,在应用程序代码中选择数据库

谢谢!谢谢你的时间!当然可以,但这只是把问题推了一步,因为您也不能在存储过程中使用@test。在纯MySQL中,最接近的方法是执行类似于
CONCAT('SELECT*FROM',@test',.tablename')
的操作,然后准备该语句。对于每个需要引用数据库的语句,您都需要这样做,并处理不使用
USE
所带来的日志记录和复制问题。
use  @test
ERROR 1049 (42000): Unknown database '@test'
mysql> SET @test = 'my_db';
Query OK, 0 rows affected (0.00 sec)

mysql> select @test;
+-------+
| @test |
+-------+
| my_db   |
+-------+
1 row in set (0.00 sec)

mysql> use @test
ERROR 1049 (42000): Unknown database '@test'