带PDO和参数的ALTER TABLE?

时间:2012-04-04 22:02:57

标签: mysql pdo

是否可以使用PDO添加带ALTER TABLE的参数。

我试过了,

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

但它失败了。

感谢。

1 个答案:

答案 0 :(得分:1)

根据我的知识,alter table查询的性质不是准备好的语句。但是,对于大多数表更改查询,您应该调用beginTransactioncommit()函数。

$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隐式调用CREATE TABLEDROP TABLE查询的commit()函数,因此无法回滚。

此外,如果您想要将变量传递给alter table查询,请确保清理您的用户输入(如果它来自哪里),并在您的数据库上创建存储过程,然后使用PDO调用它附上你的变量inout。只是想一想你的问题是如何措辞的。