Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-数据库名称的别名?_Mysql_Alias - Fatal编程技术网

MySQL-数据库名称的别名?

MySQL-数据库名称的别名?,mysql,alias,Mysql,Alias,我有一个系统性的问题,我没有时间或预算来解决,我希望有一个mysql黑客我可以部署,这将拯救我的小世界从即将到来的厄运 我现在管理的系统的创建者没有意识到数据库名称可以包含字母、数字和下划线以外的字符。因此,查询如下所示 SELECT * FROM {$db}.settings 如果数据库名称包含非标准的内容。。。像一个破折号。世界结束了,所有的疑问都破灭了 db前缀存在是因为该系统以前运行但现在不运行多站点功能 你会认为我可以用 $db = "`{$db}`"; 要是。。您可以看到,大量j

我有一个系统性的问题,我没有时间或预算来解决,我希望有一个mysql黑客我可以部署,这将拯救我的小世界从即将到来的厄运

我现在管理的系统的创建者没有意识到数据库名称可以包含字母、数字和下划线以外的字符。因此,查询如下所示

SELECT * FROM {$db}.settings
如果数据库名称包含非标准的内容。。。像一个破折号。世界结束了,所有的疑问都破灭了

db前缀存在是因为该系统以前运行但现在不运行多站点功能

你会认为我可以用

$db = "`{$db}`";
要是。。您可以看到,大量javascript功能围绕这个数据库名称发送,以跟踪要更新的站点。通过添加这些引号,您可以打破这一切,因为它不是获取
databasename
,而是获取

`databasename`
所以。。。为什么不将数据库名称设置为兼容的名称。。此系统发送到外部服务器,在那里我无法控制数据库名称

痛苦

是否有一种方法可以在初步查询中别名数据库名称,这将影响所有后续查询。基本上设定一个常数

然后,类似的内容将适用于所有后续查询。比如:

set `$db` AS database
sed -e "s/{\$db}/\`{\$db}\`/g" -i * */* */*/* */*/*/*

我可以将$db变量设置为database,它应该会运行。。如果这是可能的?

如果您总是在一个数据库上操作($db在连接到数据库后不会改变),那么就在连接后出现问题

USE `$db`;
并从所有查询中删除
{$db}.
前缀
USE
query为当前连接中的未来查询设置活动(默认)数据库


您没有告诉我您使用的是哪种编程语言,所以我假设使用PHP。通常,您可以在建立连接()时设置默认数据库。此外,可能还有一个类似的函数,您可以在连接后调用。

我将使用以下方法修复查询:

set `$db` AS database
sed -e "s/{\$db}/\`{\$db}\`/g" -i * */* */*/* */*/*/*
首先用一个大的警告来测试它,因为这可能会带来很多麻烦。特别检查您的
sed
-i
选项是否需要后缀