PHP / mysql条件更新查询

时间:2011-03-10 06:10:17

标签: php mysql conditional

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

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。基本上我想更新数据库中的两个图像列,当且仅当它们不为空时。这是因为构建表单的方式,除非图像实际上传,否则图像字段在技术上总是空的。有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用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,还可以使用{{3}}。