2017-04-06 39 views
-1

有很多方法可以在這個區域使用變量,但這個變量的位置似乎與我在下面寫的語法一起工作。除此之外,它沒有。語法:create table'variable'

$name = (string)$_GET['name']; 


mysqli_select_db($con,"dbtest"); 

// sql to create table 
$sql = "CREATE TABLE '".$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 
)"; 
+1

您的代碼很容易受到SQL注入式攻擊。您應該使用[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)或[PDO](http://php.net/manual/en/pdo.prepared- statement.php)按照[本文]中描述的準備語句(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 –

+0

btw;你甚至連接和查詢/執行? –

+1

使用''''而不是'''表名。 – Dimi

回答

0

試試這個: (在你的變量擺脫引號和雙引號的 - >名稱)

$sql = "CREATE TABLE $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 
)"; 
+1

如果他們的表被稱爲「我的表1-1」或「CALL」(https: //dev.mysql.com/doc/refman/5.7/en/keywords.html)或「my-table」或「123」?考慮一下;-) –

+0

非常聰明,我得到了覆蓋;)但你的方式working.thanks – Julian