我正在研究一个项目,我必须使用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'
。非常感谢帮助。提前谢谢!
答案 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
)";
如果可以使用不同的扩展程序,并且您希望更频繁地删除它们,请参阅
答案 1 :(得分:0)
我发布的查询没有任何问题,但有些事情可能有问题
确保没有同名的表存在。您可以使用IF NOT EXISTS
标记来确定
CREATE TABLE IF NOT EXISTS". $file_name . "(
$file_name
不为空。否则,您在CREATE TABLE
语句中传递空标识符;这将不会成功。根据您的评论:您有$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
)";