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());
ура