如果 POST['submitted_field'] 不是 Null MariaDB,MySQL 则更新行字段

Update Row Fields if POST['submitted_field'] Is Not Null MariaDB , MySQL

您好,我正在尝试更新有效提交的用户信息 在我的查询中,只有当相关 $_POST[ ] 不为 null 时才可以更新多个列 我该怎么做?使用工具 php , MariaDB 或 mysql I. 我试过这样的东西但是它 returns 语法错误对应于 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";

你可以找个帮手来做这件事

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 是一个很好的工具。