7

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'));

但它失败了。

谢谢。

4

1 回答 1

1

据我所知,alter table 查询的性质不是准备好的语句。但是您应该为大多数表更改查询调用beginTransactionand函数。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 TABLEDROP TABLE查询的 commit() 函数,因此无法回滚。

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

于 2012-05-15T05:26:53.240 回答