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