首页 > 解决方案 > 如果 POST['submitted_field'] 不为空,则更新行字段 MariaDB,MySQL

问题描述

嗨,我正在尝试在我的查询中更新有效提交的用户信息,只有当相关的 $_POST[] 不为空时,才可以更新多个列我该怎么做?使用工具 php , MariaDB 或 mysql I. 我尝试了类似的方法,但它返回与 MariaDB 对应的语法错误

 $query = " UPDATE `users`
            SET name = COALESCE($name, name),
            title = COALESCE($title, title),
            email = COALESCE($email, email),
            gender = COALESCE($gender, gender)
            WHERE `id` = '" . $_SESSION['id'] . "'   LIMIT 1";

标签: phpmysqlmariadbweb-development-server

解决方案


你可以有一个帮手来做这件事

function getUserUpdateQuery(array $data, $userId)
{
    $condition = 'WHERE id = '.$userId;
    $query = 'UPDATE `users` SET ';
    $updates = [];

    foreach ($data as $columnName => $columnValue) {
        if( !is_null($columnValue) )
        {
            $updates[] = sprintf('`%s` = \'%s\'', $columnName, $columnValue);
        }
    }

    $query .= implode(' AND ', $updates).' ';

    $query .= $condition;

    return $query;
}

$query = getUserUpdateQuery(['title' => $title, 'email' => $email], $_SESSION['id']);

// updating codes here

注意:在生产环境中,最好是绑定数据。PDO 是一个很好的工具。


推荐阅读