PHP mysqli不通过变量添加列(ALTER TABLE)

PHP mysqli不通过变量添加列(ALTER TABLE),php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试使用以下代码向表中添加一列。它不允许我通过变量($document\u type)插入列名 如果我静态地键入列名,它就会工作。但对于变量,注意到发生了什么,它甚至不会抛出错误。知道这是怎么回事吗?这应该行得通。:) 你太棒了。它起作用了!但这是怎么发生的?你能解释一下吗?反勾号完全是SQL语法(如果你的查询在没有反勾号的情况下工作,那么那些查询不太可能解决它,尽管使用它们总是很好的)。首先是$document\u type——如果PHP知道一个名为$document的变量,您希望它出现

我正在尝试使用以下代码向表中添加一列。它不允许我通过变量($document\u type)插入列名

如果我静态地键入列名,它就会工作。但对于变量,注意到发生了什么,它甚至不会抛出错误。知道这是怎么回事吗?

这应该行得通。:)


你太棒了。它起作用了!但这是怎么发生的?你能解释一下吗?反勾号完全是SQL语法(如果你的查询在没有反勾号的情况下工作,那么那些查询不太可能解决它,尽管使用它们总是很好的)。首先是
$document\u type
——如果PHP知道一个名为
$document
的变量,您希望它出现在这里吗?为什么不呢?通过添加
{..}
可以强制使用完整的变量名,它是backticks。我只是将
hr\u类型
$document\u类型
用反勾号包装起来,然后像魔术一样开始工作。它实际上在没有{..}的情况下工作。我认为这里涉及mysql保留关键字。但是,{…}是首选。
“$var_123”
被插入到
$var_123
,而不是
$var.“\u 123”
变量正确传递。这很奇怪,因为某种原因亚什·索达的答案奏效了。有人能解释一下吗?那是回击。我只是将
hr\u类型
$document\u类型
用反勾号包装起来,然后像魔术一样开始工作。它实际上在没有{..}的情况下工作。我想mysql在这里保留了一些关键字。变量数据中有空格!
$document_type=$_POST['document_type'];
$category=$_POST['category'];
$file_extension=$_POST['file_extension'];

// Database Insert
$sql_link = Connect_MySQLi_DB();
$stmt1 = $sql_link->prepare("INSERT INTO document_type (document_type,category,file_extension) VALUES (?,?,?)"); 
$stmt1->bind_param('sss',$document_type,$category,$file_extension);

if($stmt1->execute()){
//Problem Here
$sql_link->query("ALTER TABLE hr_types ADD $document_type VARCHAR(255) NULL"); 
}
$sql_link->query("ALTER TABLE `hr_types` ADD `{$document_type}` varchar(255) NULL");