У меня есть функция для обновления до 3 полей в таблице MySQL. Функция может получать все 3 поля для обновления или только 1 или 2
Прямо сейчас я делаю это так (это работает) для создания оператора MySQL.
if ($foo1){
$mysql_set = '`foo1` = :foo1';}
if ($foo2){
if ($mysql_set){$mysql_set .= ', ';}
$mysql_set .= '`foo2` = :foo2';}
if ($foo3){
if ($mysql_set){$mysql_set .= ', ';}
$mysql_set .= '`foo3` = :foo3';}
$update = $db->prepare("UPDATE `bar` SET $mysql_set WHERE `id` = :id");
if ($foo1){
$update->bindValue(':foo1', $foo1, PDO::PARAM_STR);}
if ($foo2){
$update->bindValue(':foo2', $foo2, PDO::PARAM_STR);}
if ($foo3){
$update->bindValue(':foo3', $foo3, PDO::PARAM_STR);}
$update->bindValue(':id', $id, PDO::PARAM_INT);
$update->execute();
Как видите, я повторяю "if ($ foo1 - $ foo3) {}" дважды, чтобы построить этот запрос MySQL. Это выглядит избыточно и интересно, есть ли лучший способ справиться с этим сценарием.