2012-01-01 10 views
-1

次のmysqlクエリを実行しようとしていますが、エラーは出ませんが、どちらも機能していませんか?重複が検出された場合は、列名を更新するだけです。 感謝します。o)重複キー変更テーブル

<?php 
$form_id = $_POST[form_id]; 
    $query = mysql_query(<<<EOT 
    ALTER TABLE `email_history` ADD `$form_id` VARCHAR(255) NOT NULL) 
    ON DUPLICATE KEY ALTER TABLE `email_history` CHANGE `$form_id` `$form_id` VARCHAR(255) NOT NULL 
    EOT 
    ) or die(mysql_error()); 
     ?> 

編集>>>>>>> 私は更新しようとしていた唯一の理由は、フォームが編集されたときにスクリプトがエラーしないようにしました。電子メールテンプレートが作成され、ユーザーがその列に日付が記録されたテンプレートを使用して電子メールを送信すると、電子メール履歴テーブルに列が追加されます。この問題は、作成列スクリプトが電子メール履歴のテンプレートの列を再作成しようとしたときに電子メールテンプレートが編集されたときに発生し、エラーが発生しました。理想的には、テンプレートが既に存在していて、再作成してください。

+1

動的にそのテーブルに列を追加しようとしていて、その列が既に存在する場合はその型を変更しますか?そのような場合は、デザインを再考する必要があります(一度だけ実行可能なアップグレードタイプのプロセスでない限り、それはそうではありません)。 – Mat

+0

たぶん彼はNoSQLの背景から来ています:-) –

+0

こんにちは、私はその列を変更する必要はありません、一度実行し、列を作成してthats、問題は、フォームが編集されるとき、理想的には、列が存在する場合、スクリプトを再作成しようとしません。 –

答えて

3

ALTER TABLE ON DUPLICATE KEYのようなものはありません。あなたは2つのステップでそれを行う必要があります。

  1. Retrieveテーブルの構造。

  2. 適切なクエリを作成して実行します。

+0

カラム名を重複しているようなものはありませんか?実際にはカラム名を同じにしてはいけませんが、保存するたびに重複カラム警告を表示したくありません。 –

+0

私は恐れがあります。 –