是否可以通過PDO向ALTER TABLE
添加參數。與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'));
但失敗了。
謝謝。
是否可以通過PDO向ALTER TABLE
添加參數。與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'));
但失敗了。
謝謝。
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
查詢提交()函數,所以回退是不可能的。另外,如果你想將變量傳遞給一個alter table查詢,確保清理你的用戶輸入(如果它是來自哪裏的),並在你的db上創建一個存儲過程,然後用PDO調用它並附上你的變量inout。只是想一想你的問題如何措辭。
在給予隱式提交的情況下在MySQL中執行DDL時打開事務沒有意義。事實上,甚至假裝它可以工作,這完全是一個糟糕的建議。 – Charles 2012-12-18 00:55:06
因爲它失敗了,這是不可能的。 – hjpotter92 2012-04-04 22:05:22
@TheJumpingFrog因爲我問了很多關於堆棧溢出的問題,但都沒有通過測試,他們中的每一個都被回答了。 – cgwebprojects 2012-04-04 22:08:02