簡體   English   中英

使用變量創建SQL數據庫表

[英]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 . "(
  1. 確保變量$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM