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

このコードは、trycatchブロック内にラップされています。
また、クラス内。
フロントページでは、次のようなコードを使用しています。

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 に答える