データベース内のテーブルが必要な列でアセンブルされているかどうかを確認する方法を探しています。
私はこの関数を作成します:
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");