2011-03-30 16 views
1

我知道的SQL很少,但找到了一個命令讓SQL Server在數據庫中添加一個列,如果它尚不存在的話。可悲的是,它對我的​​MySQL數據庫執行時不起作用,返回語法錯誤。如果不存在使用PDO添加MySQL列

$query = $dbh->prepare("if not exists (select * from syscolumns where id=object_id(':table_name') and name='where') alter table :table_name add where int(2)"); 

if($query->execute(array(':table_name'=>'registrations'))) { 
    //twist and shout 
} else { 
    print_r($query->errorInfo()); 
} 

那麼我應該改變創建'如果int(2)'這個列'如果它不存在?

+0

爲什麼你需要動態創建一個列? – 2011-03-30 18:37:13

+1

您應該避免使用保留字(如WHERE)作爲列名。 – Lunc 2011-03-30 18:41:18

+0

優秀的一點,我需要改變,以更安全,更具描述性。我通過一個PHP腳本來做到這一點,因爲它是我知道如何訪問我的訪問級別的唯一方式,我無法直接訪問數據庫服務器。 – shanethehat 2011-03-30 19:48:41

回答

1

你將不得不創建一個存儲過程來處理這個在一個語句中。這是在這裏討論:add column to mysql table if it does not exist

+0

只要做到這一點,並抓住由此產生的錯誤。這不是我喜歡工作的方式,但已經很晚了,需要修復,所以謝謝! – shanethehat 2011-03-30 19:51:43