У меня есть веб-программа, которая позволяет администратору обновлять информацию о пользователе ... С этим сказанным, я хочу только столбцы обновляемые, которые на самом деле были «обновлены» ...PDO MYSQL Update только Если Different
Я сделал довольно много исследований по этому вопросу, и кажется, что все методы используют устаревшие запросы, которые не используют инструкцию prepare
для выхода ...
Может кто-нибудь, пожалуйста, помогите мне с утверждением?
По существу в psuedocode: Update FIRSTNAME if $editedUserdata['firstname'] != FIRSTNAME, LASTNAME if $editedUserData['lastname']
= ФАМИЛИЯ ... и т.д. ...
Вот что я для почтового кода ...
$password = sha1($password);
$editedUserData = array(
'firstname' => $firstname,
'lastname' => $lastname,
'username' => $username,
'password' => $password,
'cellphone' => $cellphone,
'security_level' => $seclvl,
'email' => $email,
'direct_phone' => $direct,
'ext_num' => $extension,
'is_active' => $userflag
);
Тогда это должно быть что-то вроде
$query = $this->db->prepare('UPDATE FIRSTNAME if(?) IS NOT FIRSTNAME, LASTNAME if(?) IS NOT LASTNAME, USERNAME if (?) IS NOT USERNAME.... VALUES (:firstname, :lastname, :username).....'
if ($query -> execute($editedUserData)) {
more code....
@ spencer7593 ahhh Извиняюсь, утверждение в вопросе было неверно истолковано. Я хочу просто оператор ONE для обновления всех полей alltogether ... Заявление psudocode будет обновляться через секунду. Я не требую отдельного запроса для каждого поля. Я просто хочу одно уникальное обновление для всех полей. – hawkhorrow
Прошу прощения за непонимание вопроса, который вы задали. Вы не можете условно указать столбец для обновления в инструкции UPDATE. Если столбец назван в списке SET, тогда вы должны указать для него значение. Вы можете использовать выражение, следующее за оператором присваивания, и это выражение может условно вернуть текущее значение столбца. Нет преимущества в производительности для получения текущих значений, по сравнению с новыми значениями, а затем вывода оператора UPDATE для назначения только измененных значений. Будет проще обновить все столбцы. – spencer7593
ВСЕ: СПАСИБО ЗА ВАШИ ОТВЕТЫ. Я смотрел на это с точки зрения производительности, но из ваших ответов я понимаю, что одно обновление будет наиболее полезным. Еще раз спасибо – hawkhorrow