无法在PHP和MYSQL中更新映像

时间:2012-07-21 20:25:01

标签: php mysql image

大家好,我正在开展一个项目,我有一个student_edit.php文件,用于更新学生 详细信息我的所有数据都已成功更新,但有一个问题,我更新时只说两个字段而不是全部,然后图像被消隐,我的字段已成功更新。

我正在做的是我正在显示学生图片,除此之外我还有另外一个输入字段来浏览图片以更新图像。我想要的很简单,如果我不更新图像而不更新其他字段图像应该仍然存在而不会变成空白。

必要的代码段就是这样:

<?php

    $file_name = $_FILES['picture']['name'];
    $tmp_name  = $_FILES['picture']['tmp_name'];

    if (copy($tmp_name, "images/" . $file_name)) {
        $picture = "images/" . $file_name;
    }

    if (!isset($_POST['picture'])) {
        $res = mysql_query("UPDATE student SET `id`='$id',`branch_id`='$branch_id',`class_id`='$class_id',`section_id`='$section_id',`roll_number`='$roll_number',`student_name`='$student_name',`father_name`='$father_name',`dob`='$dob',`student_address`='$student_address',`gender`='$gender',`status`='$status',updated=now() WHERE id='$id'") or die(mysql_error());
    }
    else {
        $res = mysql_query("UPDATE student SET `id`='$id',`branch_id`='$branch_id',`class_id`='$class_id',`section_id`='$section_id',`roll_number`='$roll_number',`student_name`='$student_name',`father_name`='$father_name',`dob`='$dob',`student_address`='$student_address',`gender`='$gender',`status`='$status',`picture`='$picture',updated=now() WHERE id='$id'") or die(mysql_error());
    }

?>

和他们是我称之为图片的图片区域

<p>
    <label for="picture"><strong>Picture:</strong> </label>
    <a href="#"><img src="<?php echo $rec['picture'];?>" width="100" height="100"/></a>
    <input name="picture" type="file" value="">

</p>

和他们是我称之为图片的图片区域

<p>
    <label for="picture"><strong>Picture:</strong> </label>
    <a href="#"><img src="<?php echo $rec['picture'];?>" width="100" height="100"/></a>
    <input name="picture" type="file" value="">

</p>

1 个答案:

答案 0 :(得分:0)

通过查看代码快速猜测,当您将代码放入数据库时​​,您无法转义$picture的值,这可能就是数据库中的图像值未更新的原因。

此外,请勿使用if(!isset($_POST['picture'])),但请尝试if (!isset($_FILES['picture']) || (isset($_FILES['picture']) && $_FILES['picture']['name'] == "")$_POST超级全局不起作用,因为文件是通过$_FILES超级全局发送的。

全部放在一起:

$file_name = $_FILES['picture']['name'];
$tmp_name = $_FILES['picture']['tmp_name'];

if (!isset($_FILES['picture']) || (isset($_FILES['picture']) && $_FILES['picture']['name'] == "")) {
  $res = mysql_query("UPDATE student SET `id`='$id',`branch_id`='$branch_id',`class_id`='$class_id',`section_id`='$section_id',`roll_number`='$roll_number',`student_name`='$student_name',`father_name`='$father_name',`dob`='$dob',`student_address`='$student_address',`gender`='$gender',`status`='$status',`picture`='$picture',updated=now() WHERE id='$id'") or die(mysql_error());
} else {
  copy($tmp_name, "images/" . $file_name)

  $picture = mysql_real_escape_string("images/".$file_name);
  $res = mysql_query("UPDATE student SET `id`='$id',`branch_id`='$branch_id',`class_id`='$class_id',`section_id`='$section_id',`roll_number`='$roll_number',`student_name`='$student_name',`father_name`='$father_name',`dob`='$dob',`student_address`='$student_address',`gender`='$gender',`status`='$status',updated=now() WHERE id='$id'") or die(mysql_error());
}

另外,我真的建议你使用MySQLi扩展名:http://php.net/manual/en/book.mysqli.php

以上代码完全未经测试,但工作。