在php中从输入字段向现有表中添加列
我使用pdo和mysql,我已经知道如何将列添加到现有表中,但是当我尝试使用输入字段中的值时,变量$..的名称。。。。正在添加为列。在php中从输入字段向现有表中添加列,php,mysql,pdo,Php,Mysql,Pdo,我使用pdo和mysql,我已经知道如何将列添加到现有表中,但是当我尝试使用输入字段中的值时,变量$..的名称。。。。正在添加为列。 我必须将输入字段中的值添加为列的代码如下所示: public function insertAlterTable($colName) { $this->pdo = $this->connectMySql(); $query = 'ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAU
我必须将输入字段中的值添加为列的代码如下所示:
public function insertAlterTable($colName)
{
$this->pdo = $this->connectMySql();
$query = 'ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT "nee"';
$stmt = $this->pdo->prepare($query);
if(!$stmt->execute()){
return false;
}
$this->pdo = null;
return true;
}
此代码被包装在try-catch块中。也在类内。
在frontpage中,我使用以下代码:
insertAlterTable($_POST['colname']);
如何将输入字段colname
as列中的值添加到现有表中。请帮忙 我已按如下方式更新了代码,因此它对我有效:
public function insertAlterTable($colName)
{
$colName = mysql_real_escape_string($colName);
$this->pdo = $this->connectMySql();
$query = "ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT \"nee\"";
$stmt = $this->pdo->prepare($query);
if(!$stmt->execute()){
return false;
}
$this->pdo = null;
return true;
}
在PHP中,使用单引号时,变量不会展开
$a = "hello";
$b = "$a dude"; // $b is now "hello dude"
$c = '$a dude'; // $c is now "$a dude"
使用双引号或字符串连接即可:
$query = "ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT \"nee\"";
《精细手册》中有更多内容:您真的不应该在这里使用
$\u POST['colname']
变量,这是一个很大的安全漏洞,任何人都可以随意注入sql。@acme我想prepare语句会解决这个问题,所以我不需要使用例如mysql\u real\u escape\u string
?您基本上是对的,但是您自己将字符串粘在一起,而不是将输入参数与execute
一起使用。因此没有自动转义。@acme请参阅问题中的“我的更新”,如果您试图在查询中的$colName周围添加双引号,但没有添加任何内容,函数将返回false;是的,我试过几次,但都没成功。我更新了答案。你试过了吗?如果它不起作用,你会收到任何错误信息吗?是的,它起作用了,所以它和单引号/双引号有关。