php - 将 mysql PDO 与 UPDATE 命令一起使用,但不要覆盖所有值

标签 php mysql pdo

我目前正在使用一个 PHP 框架,它基本上使用 PDO 的包装器,并且被一个问题难住了。我有一个页面,它接受任意数量的帖子变量,这些变量可以是以下内容的任意组合:

":fullname" => $_POST['fullName'],
    ":universityID" => $_POST['university'], 
    ":gpa" => $_POST['gpa'], 
    ":major" => $_POST['major'], 
    ":gradYear" => $_POST['gradYear'], 
    ":photo" => "", 
    ":description" => $_POST['description'], 
    "howDidYouHear" => $_POST['howDidYouHear']

我有一个更新语句,应该如下所示:

$affectedRows = getDatabase()->execute('UPDATE user SET universityID = :universityID, 
gpa = :gpa, etc, WHERE fullName=:fullName', array(':universityID' =>     
$_POST['universityID'], ':gpa' => $_POST['gpa']));

现在的问题是,如果我执行这种更新语句,我将覆盖表中的旧数据,其中大部分仍然有效。我想要做的只是更新我有新信息的行,而不触及其他行。有没有办法确定查询中哪些应该更改,哪些不应该更改?

最佳答案

假设如果您在某个字段中传递空值,您希望它保留原始值。在 UPDATE 子句中使用 if,示例

UPDATE user 
SET universityID = IF(:universityID = '', universityID, :universityID),
    gpa = IF(:gpa = '', gpa, :gpa), ....

或者类似的东西

关于php - 将 mysql PDO 与 UPDATE 命令一起使用,但不要覆盖所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633004/

相关文章:

php - 函数 mysql_real_escape_string 的 PDO 等效项是什么?

php - 显示从下拉列表中检索到的数据

php - 如何重写 URL,使用户看起来好像在他们不在的地方?

javascript - 当我点击动态按钮时的动态模态

mysql - Rails 3.1 和 mysql [致命] 分配内存失败

具有可变参数的 MySQL 函数

python - 使用 SQL/Python 构建概率分布

php/pdo/mysql 从 select * in html 表中访问选定的行

php - 与 $_POST 混淆

php - mysql 中 csv 批量插入的限制