0

嗨,伙计们,我正在做一个项目,我有一个 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>
4

1 回答 1

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

上面的代码完全未经测试,但应该可以工作。

于 2012-07-21T20:41:51.470 回答