何を試しても、列の名前が変更または削除された後、テーブルのすべてのレコードが削除されます。私は間違って何をしていますか?これは私が試したdeleteメソッドです行やレコードを削除せずにmysql列名の名前を変更して削除するにはどうすればよいですか?
//method 1 (doesn't work)
ALTER TABLE products_jobs CHANGE COLUMN ".$old_name." ".$new_name." VARCHAR(255) NOT NULL, CHANGE COLUMN ".$old_price." ".$new_price." VARCHAR(255) NOT NULL;
//method 2 (doesn't work)
ALTER TABLE products_jobs MODIFY COLUMN ".$old_name." ".$new_name." VARCHAR(255) NOT NULL, MODIFY COLUMN ".$old_price." ".$new_price." VARCHAR(255) NOT NULL;
//method 3 (doesn't work)
ALTER TABLE products_jobs ADD ".$new_name." VARCHAR(255) NOT NULL AFTER qty;
UPDATE products_jobs SET ".$new_name." = CASE WHEN ".$old_name." THEN 1 ELSE 0 END;
ALTER TABLE products_jobs DROP COLUMN ".$old_name.";
ALTER TABLE products_jobs ADD ".$new_price." VARCHAR(255) NOT NULL AFTER qty;
UPDATE products_jobs SET ".$new_price." = CASE WHEN ".$old_price." THEN 1 ELSE 0 END;
ALTER TABLE products_jobs DROP COLUMN ".$old_price.";
//method 4 (doesn't work)
ALTER TABLE products_jobs ADD ".$new_price." VARCHAR(255) NOT NULL AFTER qty, ADD ".$new_name." VARCHAR(255) NOT NULL AFTER qty;
UPDATE products_jobs set ".$new_price." = ".$old_price.", ".$new_name." = ".$old_name.";
ALTER TABLE products_jobs DROP COLUMN ".$old_price.", DROP COLUMN ".$old_name.";
:ここ
は、列名の試みを(各試みは、同時に2つの列をやっている)の名前を変更しています。他にどのようにこれを書くことができるのかわからないので、私はこの1つの方法をもっと試しませんでした。もう一度、同時に2つの列を実行しています。
ALTER TABLE products_jobs DROP COLUMN ".$old_name.", DROP COLUMN ".$old_price.";
だから、これらすべてのものは、列の名前を変更し、削除して動作しますが、問題は良いされていない、テーブルのすべてのレコードが削除されますです。すべての行/レコードをそのまま維持する必要があります。これが問題なのかどうかは分かりませんが、テーブルタイプ/エンジンはmyisamではなくinnodbです。
UPDATE
私はそこに余分なコードを持っていたことを考え出し、それが間違ったデータベースを参照しました。データベース変数が正しくありませんでした。私がそれを訂正すると、上記の私の問題はなくなりました。ここで私を悩ましていたコードがあります。 MySQLのマニュアルパー
$sql = mysql_query("SELECT COUNT(*) totalColumns FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '".$database."' AND table_name = 'products_jobs'");
$row = mysql_fetch_assoc($sql);
$totalcolumns = $row['totalColumns'];
if ($totalcolumns < 4) {
$sql = mysql_query("DELETE FROM products_jobs");
}
これらのPHP変数の値は何ですか?これらのステートメントは、SQLをインジェクトしない限り、ANYローを削除する必要はありません。 – Uueerdo
これらは多くの異なることがありますが、1つの例は、名前1の場合はVariable_List_name、価格1の場合はVariable_List_priceです。 – leoarce
おそらく外国キー –