2012-04-04 61 views
5

是否可以通過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')); 

但失敗了。

謝謝。

+0

因爲它失敗了,這是不可能的。 – hjpotter92 2012-04-04 22:05:22

+2

@TheJumpingFrog因爲我問了很多關於堆棧溢出的問題,但都沒有通過測試,他們中的每一個都被回答了。 – cgwebprojects 2012-04-04 22:08:02

回答

0

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查詢提交()函數,所以回退是不可能的。另外,如果你想將變量傳遞給一個alter table查詢,確保清理你的用戶輸入(如果它是來自哪裏的),並在你的db上創建一個存儲過程,然後用PDO調用它並附上你的變量inout。只是想一想你的問題如何措辭。

+0

在給予隱式提交的情況下在MySQL中執行DDL時打開事務沒有意義。事實上,甚至假裝它可以工作,這完全是一個糟糕的建議。 – Charles 2012-12-18 00:55:06