php - 如果 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";
解决方案
你可以有一个帮手来做这件事
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 是一个很好的工具。
推荐阅读
- r - 如何在 foreach() 循环上插入绘图?
- crystal-reports - 如何将行组合成组并将其他列的值相加?
- reactjs - 如何像缺口 OutlinedInput 一样设置 InputAdornment 的样式?
- node.js - 是否可以在节点 js 中为 GCE 自动生成密码
- json - 使用powershell将键值对添加到json文件
- postgresql - PostgreSQL:创建模式,授予权限失败
- ios - 在 Swift 中优化从 Firestore 获取
- spring-boot - 如何共享 Spring Boot 应用程序
- javascript - 确定 HighStock 图表中可用的趋势线类型
- java - 使用 RestTemplate 复制精确的 CURL 请求