2012-10-29 39 views
1

我尝试使用下面的代码创建一个PHP SQL表的SQL表:创建PHP与变量和文本

$sql = "CREATE TABLE `$DBName`.`$login`_clients (
    ClientID int NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`ClientID`), 
    AgentClients varchar(15), 
    ClientTotal int 
)";  

的钮脚本运行正常,并保存在数据库作为我$login查询。然而,我想将表格保存为$login_clients。防爆。 $login="Fred",那么该表将被命名为Fred_clients。我已经尝试了几种将变量与文本组合的方法,但无法取得格式。有什么建议么?

$sql = "CREATE TABLE `$DBName`.`$login`_clients (
    ClientID int NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`ClientID`), 
    AgentClients varchar(15), 
    ClientTotal int 
)";  
+0

难道你不觉得这是不好的做法,以这种方式单独的数据? –

+0

@jperovic显然不是。如何向OP解释为什么这可能是一个不好的做法? –

+0

这可能只是我内心的偏执狂,但我决不会在没有上帝的理由的情况下向前端授予“CREATE”。相反,如果确实需要数据分离,我会查找表分区... –

回答

4

你只需要在错误的地方你的背部剔,应该_clients后走了。您可能遇到的问题是PHP解释器认为您的变量被称为$login_clients而不是$login,可以通过将变量包装在花括号{}中来解决该问题。

$sql = "CREATE TABLE `{$DBName}`.`{$login}_clients` (
    ClientID int NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`ClientID`), 
    AgentClients varchar(15), 
    ClientTotal int 
)"; 
+2

您会希望超级超级小心,'$ login'不包含任何有害的内容。 – tadman

+1

还要注意在答案中正确使用封装。封装非常重要。 – Yitzhak

+0

@doublesharp感谢您的帮助,这清除了我对大括号的问题!一旦我可以选择答案,这就是它。 :) –

0

这应该工作

$sql = "CREATE TABLE `$DBName`.`" . $login . "_clients` (
    ClientID int NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`ClientID`), 
    AgentClients varchar(15), 
    ClientTotal int 
)";