0

私は、更新される前に、現場に何があったかを追跡するシステムに取り組んでいます。以前のデータにはテーブルを使用したいのですが、他のオプションも利用できます。これは、タスクを実行するサンプルコードです。

<?php

$initial_value = $_POST['some_value'];
$id =231212213; // some id

$stmt = $mysqli->prepare("SELECT column FROM table WHERE user=?")
$stmt->bindParam("s", $id);
$stmt->execute();
$stmt->bind_result($column);
$stmt->fetch();

if ($column !="") {
  //edit : it doesnt matter to me whether the data is moved into a new table or column
  $stmtA = $mysqli->prepare("UPDATE another_table SET backup_column=? WHERE user=?");
  $stmtA->bindParam("ss", $column, $id);
  $stmtA->execute();

  $stmtB = $mysqli->prepare("UPDATE table SET column=? WHERE user=?");
  $stmtB->bindParam("ss", $initial_value, $id);
  $stmtB->execute();
}

?>
4

1 に答える 1

1

これは、コードを変更して実行できる純粋な mysql コマンド ソリューションです。

1.) CREATE TABLE new_table_name LIKE old_table_name
2.) INSERT INTO new_table_name SELECT * FROM old_table_name

終わり。;-)

このようにして、以前のテーブルの正確なバックアップがあり、結合は非常に簡単に違いを確認できます。

SELECT a.*, b.* FROM old_table a JOIN new_table b ON a.id=b.id WHERE <criteria>;

編集

UPDATE BACKUP SET COLUMN = (SELECT COLUMN FROM TABLE WHERE user_id=#) WHERE user_id=#;
于 2012-08-02T17:21:52.560 に答える