duanhuancong1969 2011-12-08 00:42
浏览 92
已采纳

mysql更新 - 跳过空白字段?

I need to know the proper way of doing this. I have a form where someone can fill in 3 different inputs to update their data.

they can leave one blank if they want and just update the other two or just one. Whatever.

so if i update as:

mysql_query("UPDATE table SET field1=input AND field2=BLANK AND filed3=input WHERE ID=123);

will it leave the blank fields unchanged? just skip over them? or will it replace the field with an empty string/blank field?

If this is the wrong way, what is the correct method? Thank You!

  • 写回答

3条回答 默认 最新

  • doz97171 2011-12-08 00:48
    关注

    It will replace them with blank values. The correct way to do it is not to put those items in the query at all:

    if (empty($field1) && empty($field2) && empty($field3) {
      // show error message, nothing to do
      return;
    }
    
    $updates = array();
    if (!empty($field1))
      $updates[] = 'field1="'.mysql_real_escape_string($field1).'"';
    if (!empty($field2))
      $updates[] = 'field2="'.mysql_real_escape_string($field2).'"';
    if (!empty($field3))
      $updates[] = 'field3="'.mysql_real_escape_string($field3).'"';
    $updates = implode(', ', $updates);
    
    mysql_query("UPDATE table SET $updates WHERE ID=123");
    

    Obviously it would be cleaner to put the changes in an associative array or object, and then loop through them.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!