【问题标题】:Cannot create SQL table with query variable as table name in PHP无法在 PHP 中使用查询变量作为表名创建 SQL 表
【发布时间】:2012-10-19 03:47:22
【问题描述】:

我在 PHP 中传递一个查询变量。我想将其设为表名,但我知道可能存在 SQL 语法错误。当我打印语句时,变量被传递意味着它工作,但数据库根本没有创建。

这是我创建数据库的代码:

$DBName = "database_name";  
$sql = "CREATE TABLE '$DBName'.'$login' (  
    ClientID int NOT NULL AUTO_INCREMENT,   
    AgentClients varchar(15),  
    ClientTotal int  
    )";  
mysql_query($sql,$link);
where `$login = $_POST['login'];

另外,我目前并不担心安全漏洞,所以不用担心。

任何见解将不胜感激。

【问题讨论】:

  • 你经常混合“表”和“数据库”。是否在此代码之前创建了数据库? (我什至不确定这是否重要)但是您可能需要先运行CREATE DATABASE '$DBName'
  • 回声 $sql;那返回什么?
  • 在 phpMyAdmin 或任何其他 mysql 客户端中运行打印的查询,您将得到所有错误。
  • 每个登录的表格,不是很好的结构,我希望您正在清理帖子值。
  • 用`替换'并在AUTO_INCREMENT之后添加PRIMARY KEY

标签: php mysql sql database create-table


【解决方案1】:

您的表名必须使用反引号,而不是引号:

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

【讨论】:

  • 或完全省略它们并且不使用反引号。
  • 他也在使用AUTO_INCREMENT,但没有定义密钥。那会失败的,对吧?
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
相关资源
最近更新 更多