2011-03-10 126 views
2

我试图提交数据到数据库。我有一个更新表单,其上有几个字段,将数据从数据库中提取到字段中。提交它会更新数据库中的数据。这两个领域我关心的是我在形式上的两个图像上传者。当我在页面上只有一个图像上传器时,我一直在成功地做到这一点,但是当我添加第二个时,无法将我的头围绕条件语法。以下是我用于只有一个图像上传器的表单的代码。它会查看提交的元素是否为空。如果是这样,它会运行一个更新语句并将图像变量遗留下来。如果图像变量不为空,它将运行一条更新语句,并将该字段添加到语句中。PHP/mysql有条件更新查询

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

回答

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您的字符串数据,如果你没有这样做。

+0

谢谢!我会试一试。我会碰到你一分,并添加检查,如果它工作,当我测试它。 :) – RyanPitts 2011-03-10 06:25:08

+0

我测试了这个,它似乎工作!谢谢@Mark! – RyanPitts 2011-03-10 08:07:53