用变量创建SQL数据库表

时间:2016-01-01 12:47:12

标签: php mysql

我正在研究一个项目,我必须使用sql。变量$file_name需要是表名,但是当我尝试这个时:

$sqlTableCreate = "CREATE TABLE ". $file_name . "( 
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
)";

表格没有创建。我查了一下:

if ($sqlConnection->query($sqlTableCreate) === TRUE) {  
    echo 'Created Sucessfully';
} else {
    echo 'Table does not create.';
}

尝试使用时我得到'Table does not create'。非常感谢帮助。提前谢谢!

3 个答案:

答案 0 :(得分:2)

您的文件名包含扩展名,但我怀疑您只想使用不带扩展名的名称作为表的名称。您可以使用basename功能删除扩展程序。

$sqlTableCreate = "CREATE TABLE ". basename($file_name, ".csv") . "( 
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
)";

如果可以使用不同的扩展程序,并且您希望更频繁地删除它们,请参阅

How to remove extension from string (only real extension!)

答案 1 :(得分:0)

我发布的查询没有任何问题,但有些事情可能有问题

确保没有同名的表存在。您可以使用IF NOT EXISTS标记来确定

  CREATE TABLE IF NOT EXISTS". $file_name . "(
  1. 确保变量$file_name不为空。否则,您在CREATE TABLE语句中传递空标识符;这将不会成功。
  2. 根据您的评论:您有$file_name = 'currentScan.csv';

    这就是问题所在。您正在尝试创建一个名为currentScan.csv的表,您的数据库引擎认为currentscan是数据库名称,.csv是表名,显然不会退出,因此错误。< / p>

答案 2 :(得分:-1)

首先检查您的数据库连接并更改您的查询,如下所示:

$sqlTableCreate = "CREATE TABLE ". $file_name . " ( 
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";