【发布时间】:2015-06-25 04:58:01
【问题描述】:
我正在制作的 CRUD 的更新部分有问题。创建工作正常,我使用非常相似的代码进行更新,但出现问题,文件上传似乎有问题。
我有一个显示数据库中所有行的页面。每一行旁边都有一个链接,上面写着编辑,当点击它时,它会转到一个页面,该页面在表单中显示来自 Db 的行。然后可以更改信息,并且有一个提交按钮,单击该按钮会使表单的操作运行,这是一个包含以下内容的 php 文件:
<?php
include ('includes/DbCon.php');
if (isset($_POST['ud_id']))$id = $_POST['ud_id'];
$query = "SELECT * FROM news WHERE id = '$id'";
$result = $mysqli->query ($query);
if(mysqli_num_rows($result)>=1)
{
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
$headline = $row['headline'];
$body = $row['body'];
$image = $row['image'];
}
else{
$mysqli->error;
}
//Set directory etc for image upload
$target_dir = "images/photo/";
$target_file = $target_dir . basename($_FILES["ud_image"]["name"]);
if (move_uploaded_file($_FILES["ud_image"]["tmp_name"], $target_file)or die($mysqli->error))
{
echo '<script type="text/javascript">';
echo 'alert("News Items Saved")';
echo '</script>';
} else {
echo "Sorry, there was an error with your file.";
}
还有更多内容,但它并没有解决这个问题,所以我需要帮助找出问题所在。我使用了 var_dump 并打印了变量以查看传递了什么,一切都很好,直到它到达 $target_file。当我打印该变量时,我得到“图像/照片”,但我怀疑它应该是完整的文件名以及目标路径。
和插入代码的设置方式一样,所以不知道有什么问题。
根据要求,表格如下:
<form action="update.php" method="post" class="newNews">
<input type="hidden" name="ud_id" value="<?=$id;?>">
<label for="title">Title</label><br />
<input type="text" name="ud_headline" value="<?=$headline;?>"/>
<label for="text">Body</label><br />
<textarea name="ud_body" rows="5" cols="21" value="" class="editBody"><?=$body;?></textarea>
<p>Current Photo</p>
<img src="images/photo/<?=$image?>" alt=" " width="auto" height="auto"><br />
<input type="file" name="ud_image" class="newsImage" ><br />
<input type="submit" name="submit" value="Update news item" class='addNew' />
</form>
【问题讨论】:
-
可以给我们看一下表格代码吗??
-
表格已添加到问题中。可能是因为它没有设置enctype?
-
如果有的话,实际的 sql 错误又是什么?
-
@tdrsam 你用 enctype="multipart/form-data" 试过了吗??
-
我刚刚添加了 enctype 并上传了图像,但更新实际上并没有将字符串保存到 Db。查询是这样的:
$edit = mysqli_query($mysqli,"UPDATE news SET headline='$ud_headline', body='$ud_body', image='$ud_image' WHERE id='$id'");
标签: php mysqli image-uploading