Обновление совпадающих столбцов из двух таблиц

У нас есть две таблицы:

  • Таблица 1: users (username, password)
  • Таблица 2: userinfo (office, address, company)

Имя пользователя совпадает с именем офиса. Я создал форму для добавления новых пользователей, и все отлично работает.

У меня есть другая форма для обновления пользователя .. Я могу заставить все работать, кроме имени пользователя / офиса.

Как бы я пошел об обновлении имени пользователя / офиса

вот мой код (очевидно, он неправильный, так как ничего не делает). Это сводило меня с ума весь день. Любые указатели будут оценены:

    $query2 =   'UPDATE users.UserName JOIN userinfo.Office ON users.UserName = userinfo.Office SET users.UserName = ?,userinfo.Office = ? WHERE users.UserName = ?';
$parameters2 = array($_POST['UserName'],$_POST['Office']);
$statement2  = $db->prepare($query2);
$statement2->execute($parameters2);

0

Решение

Основная проблема имеет неправильный синтаксис. Не должно быть никаких имен полей перед SET пункт. При обновлении вы просто указываете имена таблиц, с которыми будете работать в этой части запроса. Попробуй это:

UPDATE users
JOIN userinfo
ON users.UserName = userinfo.Office
SET
users.UserName = ?,
userinfo.Office = ?
WHERE users.UserName = ?

Я также не понимаю, почему у вас будут две разные переменные POST для имени пользователя и офиса, если они будут иметь одинаковое значение. Итак, я предполагаю, что одно представляет текущее значение, а другое — значение, которое будет обновлено. Если это так, вам нужно привязать ваши параметры следующим образом:

// change these two lines as necessary
$old_name = $_POST['Office'];
$new_name = $_POST['UserName'];
// execute query
$query2 = '...'; // query noted above
$parameters2 = array($new_name, $new_name, $old_name);
$statement2  = $db->prepare($query2);
$statement2->execute($parameters2);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]