如果 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 是一个很好的工具。
您好,我正在尝试更新有效提交的用户信息 在我的查询中,只有当相关 $_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 是一个很好的工具。