带PDO和参数的ALTER TABLE?

cgw*_*cts 7 mysql pdo

是否可以ALTER TABLE使用PDO 添加参数.

我试过了,

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

但它失败了.

谢谢.

Mau*_*wer 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();
Run Code Online (Sandbox Code Playgroud)

尽管据我所知,您可以使用准备好的语句并执行。

注意: MySQL 在查询
上隐式调用 commit() 函数,因此不可能进行回滚。CREATE TABLEDROP TABLE

另外,如果您想将变量传递给更改表查询,请确保清理您的用户输入(如果这是它的来源),并在数据库上创建一个存储过程,然后使用 PDO 调用它并附加您的变量对于输入输出。只是想一下您的问题是如何措辞的。