是否可以使用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'));
但它失败了。
感谢。
答案 0 :(得分:1)
根据我的知识,alter table查询的性质不是准备好的语句。但是,对于大多数表更改查询,您应该调用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隐式调用CREATE TABLE
和DROP TABLE
查询的commit()函数,因此无法回滚。
此外,如果您想要将变量传递给alter table查询,请确保清理您的用户输入(如果它来自哪里),并在您的数据库上创建存储过程,然后使用PDO调用它附上你的变量inout。只是想一想你的问题是如何措辞的。