[英]SQL database table creation with variable
我正在一个项目上,我必须使用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'
。 帮助将不胜感激。 提前致谢!
您的文件名包含扩展名,但是我怀疑您只想使用不带扩展名的名称作为表名。 您可以使用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
)";
如果可以有其他扩展名,并且您想更一般地删除它们,请参见
我看不到您发布的查询有任何问题,但几件事情可能是错误的
确保不存在具有相同名称的表。 您可以使用IF NOT EXISTS
标记来确定
CREATE TABLE IF NOT EXISTS". $file_name . "(
$file_name
不为空。 否则,您在CREATE TABLE
语句中传递了一个空标识符。 这不会成功。 根据您的评论:您有$file_name = 'currentScan.csv';
这就是这里的问题。 您正在尝试创建一个名为currentScan.csv
的表,您的数据库引擎认为currentscan
是该数据库的名称,而.csv
是该表的名称,显然该表不会退出,因此出现错误。
首先检查您的数据库连接并使用以下给定的条件更改查询:
$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
)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.