尋找一種方法來檢查數據庫中的表是否已與所需的列組合在一起。PHP PDO檢查mySQL表中的多個列並創建不存在的列
我建立這個功能:
function verifydbtable($table,$fields){
global $fsdbh;
foreach($fields as $field => $type){
$verify = $fsdbh->prepare("ALTER TABLE `$table` ADD `$field` $type;");
$verify->execute();
}
return 1;
}
哪裏$table
是表更新和$fields
包含了所有的領域,以檢查的數組。 $type
包含字段的類型,例如。 VACHAR(20)
。
該函數適用於每個字段,直到遇到已存在的字段。然後它返回false。
問題是,它不會檢查數組中的剩餘列。我們如何讓它繼續檢查剩餘的字段。
引起的事實是,如果列已經存在,它將返回錯誤#1060 - Duplicate column name 'subtitle'
這是它應該做的事情。然後,如果返回此錯誤,則需要跳至數組中的下一個項目。
通俗地說,我們需要這個,但當然這不是一個mySQL語句。
prepare("ALTER TABLE `$table` ADD IF NOT EXIST `$field` $type");
你收到任何錯誤訊息? – kapa
沒有錯誤信息。該功能是完美的。問題是,如果其中一個字段已經存在,則會返回錯誤:#1060 - 重複列名'url'。然後,而不是繼續與數組中的下一個項目,整個函數返回false。我們需要解決這個問題。是否有某種方法告訴它繼續IF ERROR。 –
您可以在INFORMATION_SCHEMA數據庫中檢查表中已有的列名,並在嘗試更改語句之前將它們從數組中刪除。 – piotrm