0

私はこのようなテーブル「ユーザー」を持っています

id  | firstname | lastname
==========================
1   | Ujang     | ahmad
2   | Jajat     | sudrajat

そしてデータがあります:

$record = array('firstname'=>'some value', 'lastname'=>'some value');
$table  = "users";

そして、次のように更新を処理します:

$exc= $conn->AutoExecute($table, $record, 'UPDATE', 'id = 1');

フィールド firstname を lastname の値で更新する方法 AutoExecute を使用する

だから私はこのような結果を得ます:

id  | firstname | lastname
==========================
1   | ahmad     | Ujang
2   | sudrajat  | Jajat
4

1 に答える 1

0

私が誤解していない限り、AutoExecute はこの仕事には適していないようです。テーブル内のすべてのレコードを一度に変換する必要がある場合は、列の名前を変更するだけです。

ALTER TABLE `users`
CHANGE COLUMN `lastname` `firstname`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `id`,
CHANGE COLUMN `firstname` `lastname`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `firstname`;

または PHP/ADODB の場合:

$sql = "ALTER TABLE `users`
  CHANGE COLUMN `lastname` `firstname`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `id`,
  CHANGE COLUMN `firstname` `lastname`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `firstname`;";
if (($result = $conn->Execute($sql)) === false)
  exit($sql.'<br />'.$conn->errorMsg());

特定のレコードをターゲットにする必要がある場合は、一時変数を使用できます。

$sql = "UPDATE users
  SET firstname=(@temp:=firstname), firstname = lastname, lastname = @temp
  WHERE id=2";
if (($result = $conn->Execute($sql)) === false)
  exit($sql.'<br />'.$conn->errorMsg());

乾杯

于 2014-04-17T11:50:14.910 に答える