adodb, AutoExecute обновить поле с полем

У меня есть таблица "пользователи", как это

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');

как мне обновить поле namename со значением lastname, используя AutoExecute

таким образом я получаю результат как это:

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

1 ответ

Если я не понимаю вас, 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());

ура

Другие вопросы по тегам