我正在开发一个使用数组中定义的mysql表的应用程序。这样可以快速更改它们以便在开发/实时环境中使用。
除了关于为什么开发环境使用完全不同的表结构的问题,我得到的是我希望这是一个简单的问题。
我有一个表的定义与其他表不同,如下:
'customer' => Array( 'variables' => 'customer.`variables`' )
虽然所有其他表都是这样定义的:
'customer' => Array( 'orders' => 'customer.orders' )
区别在于围绕表名的那对。显然这不是一个有效的表(我在数据库中找不到简单命名为'变量'的表。快速的想法如何跟踪这个?我在这一点上假设它具有特殊含义MySQL服务器,但这只是猜测。
注意:在同一个数组中定义了许多其他表,我只是将它们排除在外。其他每个定义都与第二个例子类似。
答案 0 :(得分:7)
可以引用标识符或 不带引号的。如果标识符包含 特殊字符或是保留的 一句话,你必须随时引用它 参考它。一组字母数字 当前角色的字符 设置,“_”和“$”并不特别。 保留字列在Section 8.3,“保留字”。 (例外:在一段时间后的保留字 合格的名称必须是 标识符,所以不需要引用。)
标识符引号字符是 反引号(“`”):
来自http://dev.mysql.com/doc/refman/5.1/en/identifiers.html
更新:在此上下文中,似乎variables
实际需要转义。但是,自动化工具(包括MySQL本身)往往会逃脱它;可能,因为转义算法不是上下文敏感的,它只是在列表中找到单词:
mysql> set sql_quote_show_create=off;
Query OK, 0 rows affected (0.00 sec)
mysql> show create table my_test;
[...]
CREATE TABLE my_test (
id int(11) DEFAULT NULL,
`variables` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1