Php 语法:创建表';变量';

Php 语法:创建表';变量';,php,mysqli,Php,Mysqli,在这方面有很多方法可以使用变量,但变量的这个位置似乎可以使用我在下面写的语法。但事实并非如此 $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 NUL

在这方面有很多方法可以使用变量,但变量的这个位置似乎可以使用我在下面写的语法。但事实并非如此

$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
)";
试试这个: (去掉变量->名称周围的引号和双引号)


您的代码容易受到SQL注入攻击。您应该使用或准备.btw中所述的语句;你甚至连接并查询/执行了吗?使用
`
而不是
'
作为表名;听起来不安全,而且没有创建足够长的密码字段来保存安全哈希。那么,你只是想让某人注册一个电子邮件地址?你认为当有人“猜到”它/他们时会发生什么?晚安,这里有很多话要说。也不确定这是不是一个完全相同的副本?当然,我们应该提到在过滤字符串之后使用过滤输入和大量额外的标志……如果他们的表被称为
my table 1-1
my table
123
,你认为会发生什么?想想看;-)非常聪明,我把它盖上了;)但是你工作得很好,谢谢
$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
)";