【问题标题】:Image doesn't appear on MYSQL database图像未出现在 MYSQL 数据库中
【发布时间】:2018-05-07 17:52:29
【问题描述】:

我的问题是,如果我尝试将图像发布到我的网站到我的名为照片的数据库中,它们不会出现在那里。图像确实出现在我创建的上传/img 文件夹中。我的数据库照片表称为 2 行的图像。 id int(11) 和图像 MEDIUMBLOB。任何想法为什么我的图像没有出现在我的 MYSQL 数据库中?

    <?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
  <title>Image Upload</title>
</head>
<body>
  <?php if(isset($_SESSION['err'])){ ?>
    <h2><?php echo $_SESSION['err']; ?></h2>
  <?php session_unset(); } ?>
  <form method="post" action="upload.php" enctype="multipart/form-data" >
    <input type="file" name="image" />
    <input type="submit" value="Submit" name="save">
  </form>
</body>
</html>

我的上传.php

<?php

require_once('config.php');
session_start();
if(isset($_POST['save']))
{
  $target_dir = "upload/img/";
  $filename = explode('.',$_FILES['image']['name']);
  $ext = $filename[1];
  $imgname = time().'.'.$ext;
  $target_file = $target_dir . $imgname ;
 if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
      $path=$imgname;
      $conn->query("INSERT INTO images (id, image)VALUES ('$path')");
      $_SESSION["Success"]='Image Is Upload Success...';
      header("Location:view.php"); /* Redirect browser */
      exit();
    } else {
      $_SESSION["err"]=$text;
      header("Location:index.php"); /* Redirect browser */
      exit();
    }
  }
}

?>

这是我的“图像”表的图片。

【问题讨论】:

  • 您没有在 INSERT 语句中提供 ID,可能与它有关。尝试从 mysql 输出错误。
  • 取决于 ID 是什么值。如果它只是一个 AUTO INCREMENT 值,我认为他根本不需要指定它。如果它是某种类型的字符串标识符,那么你需要传入一个他没有做的值。
  • 我从表中删除了 id 行,然后我可以上传图片,但这不是我正在寻找的确切解决方案,因为它在上传图片后给了我一个错误。

标签: php html mysql database image


【解决方案1】:

所以我明白了为什么这些图片不会上传到我的 MYSQL 数据库。

  1. 就像这里的一些人建议的那样,我不需要在我的 INSERT 部分中写“id”。

  2. 我的表 id 行必须设置为 primary 和 AUTO_INCREMENT(见下图)。

现在似乎一切正常。您可以将图像行类型从 varchar 设置为 blob。

【讨论】:

    【解决方案2】:

    应该是的

    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
      $path=$imgname;
      $conn->query("INSERT INTO images (image) VALUES ('$path')");
      $_SESSION["Success"]='Image Is Upload Success...';
      header("Location:view.php"); /* Redirect browser */
      exit();
    } else {
      $_SESSION["err"]=$text;
      header("Location:index.php"); /* Redirect browser */
      exit();
    }
    

    因为你告诉 Mysql 插入 id 但你没有提供它的值

    【讨论】:

    • 我替换了 $conn->query("INSERT INTO images (id, image)VALUES ('$path')"); with $conn->query("INSERT INTO images (image) VALUES ('$path')");但结果是一样的。它不会将图像上传到我的数据库,但图像每次都会出现在我的文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多