php - 用图片更新Mysql内容

标签 php mysql file-upload

我正在尝试在一个真正简单的内容管理系统中更新内容。这个想法是用户可以登录并修改内容。

我遇到的问题是,如果用户登录,更改新闻部分中的内容,但不更改图像,则在保存图像文件时,图像文件将被覆盖,没有任何内容。如何更新内容,但如果用户不更改图像,它会单独保留此部分并且不会覆盖图像。

我之前曾尝试保存旧的图像文件名并使用它来代替,但由于某种原因它似乎总是使用新的文件图像名称,即使这是空白的。

我想我需要这样的东西:

if(image is not changed){
   $filename = uploaded image;
}else{
   $filename = old file name;

我只是不知道如何执行第一个 if 语句,它似乎总是检测图像的变化,即使变化是 NULL 或某种什么都没有。

我编写了以下代码,希望能够理解它。

if (isset($_POST['update'])) {
$e_id = sanitizestring($_POST['edit_id']);
$title = sanitizestring($_POST['newstitle']);
$date = sanitizestring($_POST['newsdate']);
$content = sanitizestring($_POST['newscontent']);;
if ($_FILES['news_img']['error'] == 0) {
    move_uploaded_file($_FILES['news_img']['tmp_name'], "uploads/news/".$_FILES['news_img']['name']);
    $filename = $_FILES['news_img']['name'];
}

    $edit_q ='
    UPDATE
    `news`
    SET
    `news_title` = ?,
    `news_date` = ?,
    `news_article` = ?,
    `news_img` =?
    WHERE
    `news_id` = ?
';

$edit_stmt = $pdo->prepare($edit_q);
if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){
    $successMsg = 'Edit successful';
}else{
    $failMsg = 'Unable to edit as this time';
    echo $failMsg;
}// end if edit successful
}// end if update is set 

最佳答案

您的问题是,当您没有上传图像且文件名设置为 var 时,$filename 为空。所以你可以在前面再加一条if语句:

if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){
    $successMsg = 'Edit successful';
}else{
    $failMsg = 'Unable to edit as this time';

您应该在哪里准备不带文件名的声明:

if ($empty($filename))
{
 if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){
    $successMsg = 'Edit successful';
}else{
    $failMsg = 'Unable to edit as this time';
}
else
{
  if($edit_stmt_no_filename -> execute(array($title, $date, $content, $link, $linktext, $e_id))){
    $successMsg = 'Edit successful';
}else{
    $failMsg = 'Unable to edit as this time';
}

关于php - 用图片更新Mysql内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083564/

相关文章:

php - 如果选中复选框,如何使用 echo 下载链接

php - 在 PHP 中通过引用返回

mysql - Rails 使用 SQL group_by

PHP Mysql update table using form 不会更新

javascript - 如何正确解除 jQuery 文件上传回调的绑定(bind)?

php - 使用 CodeIgniter 删除文件?

php - Laravel-4 定时任务

java - 如何在使用 chrome 驱动程序/firefox 驱动程序时更改 Webdriver 中的文件下载位置

php - 是否有必要使用 mysql_real_escape_string() 将图像导入 mysql?

angular - 使用 ng2-file-upload 将多个文件上传到不同的 url