【问题标题】:PHP/mysql conditional update queryPHP/mysql条件更新查询
【发布时间】:2011-07-12 11:36:55
【问题描述】:

我正在尝试将数据提交到数据库。我有一个更新表单,上面有几个字段,可以将数据库中的数据提取到字段中。提交它会更新数据库中的数据。我关心的两个字段与表单中的两个图像上传器有关。当我在页面上只有一个图像上传器时,我已经成功地做到了这一点,但是当我添加第二个时,我无法理解条件语法。下面是我用于只有一个图像上传器的表单的代码。它查看提交的元素是否为空。如果是这样,它会运行更新语句并忽略图像变量。如果图像变量不为空,它会运行一条更新语句,并将该字段添加到语句中。

if($imgProfileFull == ""){
$query = "update students set `nameFirst` = '$nameFirst', `nameLast` = '$nameLast', `profile` = '$profile', `priority` = '$priority', `active` = '$active', `_modifiedDate` = '$_modifiedDate' where `id` = '$id'";
}else{
if((($_FILES["image"]["type"] == "image/jpeg")
|| ($_FILES["image"]["type"] == "image/pjpeg"))
&& ($_FILES["image"]["size"] < 500000))
{
  if($_FILES["image"]["error"] > 0){
    header("location:students.php?file=error");
  }else{
    move_uploaded_file($_FILES["image"]["tmp_name"],
    "../images/students/full/" . $imgProfileFull);
  }
}else{
  header("location:students.php?file=error");
}
$query = "update students set `imgProfileFull` = '$imgProfileFull', `nameFirst` = '$nameFirst', `nameLast` = '$nameLast', `profile` = '$profile', `priority` = '$priority', `active` = '$active', `_modifiedDate` = '$_modifiedDate' where `id` = '$id'";
}

我将如何编写更新语句以包含另一个图像字段。变量为$imgProfileThumb。基本上,当且仅当它们不为空时,我想更新数据库中的两个图像列。这是因为表单的构建方式,从技术上讲,图像字段始终为空,除非实际上传了图像。有什么想法吗?谢谢!!

【问题讨论】:

    标签: php mysql conditional


    【解决方案1】:

    您可以使用 if 语句动态创建查询。

    $query = "UPDATE students SET ";
    
    if ($imgProfileFull !== ""){
        $query .= "`imgProfileFull` = '$imgProfileFull', ";
    }
    
    if ($imgProfileThumb !== ""){
        $query .= "`imgProfileThumb` = '$imgProfileThumb', ";
    }
    
    $query .= "`nameFirst` = '$nameFirst',
               `nameLast` = '$nameLast',
               `profile` = '$profile',
               `priority` = '$priority',
               `active` = '$active',
               `_modifiedDate` = '$_modifiedDate'
               WHERE `id` = '$id'";
    

    如果您还没有这样做,您可能还希望将mysql_real_escape_string 用于您的字符串数据。

    【讨论】:

    • 谢谢!我会试试看。我会给你一点,并在我测试它时添加检查它是否有效。 :)
    • 我已经对此进行了测试,它似乎可以正常工作!谢谢@Mark!
    猜你喜欢
    • 2016-08-14
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2019-01-03
    • 2012-10-30
    相关资源
    最近更新 更多