7

ALTER TABLEPDOでパラメータを追加することは可能ですか?

私が試してみました、

$q = $dbc -> prepare("ALTER TABLE emblems ADD ? TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', ADD ? DATETIME NOT NULL");
$q -> execute(array($emblemDB, $emblemDB . 'Date'));

しかし、それは失敗しました。

ありがとう。

4

1 に答える 1

1

私の知る限り、テーブル変更クエリの性質は、準備されたステートメントではありません。ただし、ほとんどのテーブル変更クエリでは、 関数beginTransactionと関数を呼び出す必要があります。commit()

$dbh->beginTransaction();

/* Change the database schema and data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
$sth = $dbh->exec("ALTER TABLE `dessert` ADD `field1` VARCHAR(24) NOT NULL");


/* Commit changes */
$dbh->commit();

私の知る限り、準備されたステートメントを使用して実行することはできますが。

注: MySQLはクエリに対して
commit() 関数を暗黙的に呼び出すCREATE TABLEためDROP TABLE

また、変数をテーブル変更クエリに渡したい場合は、必ずユーザー入力をサニタイズし (それが入力元の場合)、db にストアド プロシージャを作成してから、PDO を使用して呼び出し、変数をアタッチします。インアウト用。あなたの質問がどのように表現されたかについて考えてみてください。

于 2012-05-15T05:26:53.240 に答える