-3

我使用 pdo 和 mysql 并且我已经知道如何将列添加到现有表中,但是当我尝试使用输入字段中的值时,变量 $.... 的名称被添加为列。
我必须将输入字段中的值添加为列的代码如下:

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 块中。
也是在一个班级里。
在首页,我使用以下代码:

insertAlterTable($_POST['colname']);

如何将输入字段中的值colname作为列添加到现有表中。
请帮忙。

我已按如下方式更新了代码,因此它对我有用:

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;
}
4

1 回答 1

2

在 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\"";

更多精美手册: http: //php.net/manual/en/language.types.string.php

于 2013-03-25T12:14:06.530 回答