在 mysql/phpmyadmin 中上传和显示图像

Posted

技术标签:

【中文标题】在 mysql/phpmyadmin 中上传和显示图像【英文标题】:Uploading and Showing Images in mysql/phpmyadmin 【发布时间】:2015-09-30 13:32:51 【问题描述】:

我目前正在尝试创建一个 .php 页面来上传图像以存储在 phpmyadmin 的表中。然后显示它们。

首先,将图像添加到数据库中的表中。 phpmyadmin 中的层次结构是:localhost -> images -> Greeting_Cards。

目前我正在尝试插入到贺卡表格中,因为稍后我将有多个类别的多个表格并分别显示它们。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>upload</title>
</head>

<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file_upload" />
<input type="submit" name="submit" value="upload" />
</form>


<?php
include '/var/db_file.php';
if(isset($_POST['submit']))

  $conn = mysql_connect("localhost","root", $pass);
  mysql_select_db("images");
  
  /* Variable inits */
  $imageName = $imageData = $imageType = null;

  $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
  $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
  $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

  if(substr($imageType,0,5) == "image")
    mysql_query("INSERT INTO 'Greeting_Cards' VALUES('','$imageName','$imageData')");
    echo "Image Uploaded!";
  
  else
    echo "Has to be an image!";
  

?>
</body>
</html>

上传的图片不会显示在表格中。我正在正确登录数据库。 “贺卡”表下的结构是:id(int11)、name(varchar30) 和 image(blob)。 www.mydomainname.net/upload.php 上显示的唯一错误/警告是:

注意:未定义索引:第 27 行 /var/www/html/upload.php 中的图像

注意:未定义索引:第 28 行 /var/www/html/upload.php 中的图像

警告:file_get_contents():文件名不能为空 /var/www/html/upload.php 第 28 行

注意:未定义索引:第 29 行 /var/www/html/upload.php 中的图像 必须是图像!

要显示图像,我必须先通过这一步。如果有任何更新,将报告此帖子。

修复 1:错误名称:更改为 name="image" 以匹配 php 变量参数。 修复 2:表名的反引号不是单引号。可选:指定列。

提前感谢您的帮助!

【问题讨论】:

输入名称是file_upload &lt;input type="file" name="file_upload" /&gt; 所以用$_FILES["file_upload"]代替$_FILES["image"] 天哪……我怎么忽略了这一点。谢谢!警告和通知消失了。但是你碰巧知道我在哪里可以找到表格中的图像。它不在 phpmyadmin 的“浏览”下。也许这是我在 phpmyadmin 中没有勾选的设置? 您的查询有误。您需要指定要插入的列。 这是表名的反引号,而不是单引号。这些列是可选的(两种方法都做了)。 只是旁观:一般来说,我建议将图像保存到文件系统,并在数据库中保存一个文件名。一旦你在某种前端展示它们,当很多用户访问你的网站时,你将很难过。 【参考方案1】:

上传图片

<!--?php
include("mysqlconnect.php");

    function GetImageExtension($imagetype)
     
       if(empty($imagetype)) return false;
       switch($imagetype)
       
           case 'image/bmp': return '.bmp';
           case 'image/gif': return '.gif';
           case 'image/jpeg': return '.jpg';
           case 'image/png': return '.png';
           default: return false;
       
     



if (!empty($_FILES["uploadedimage"]["name"])) 

    $file_name=$_FILES["uploadedimage"]["name"];
    $temp_name=$_FILES["uploadedimage"]["tmp_name"];
    $imgtype=$_FILES["uploadedimage"]["type"];
    $ext= GetImageExtension($imgtype);
    $imagename=date("d-m-Y")."-".time().$ext;
    $target_path = "images/".$imagename;


if(move_uploaded_file($temp_name, $target_path)) 

    $query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES 

('".$target_path."','".date("Y-m-d")."')";
    mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error());  

else

   exit("Error While uploading image on the server");
 



?>;

显示图像

<!--?php
include("mysqlconnect.php");

$select_query = "SELECT 'images_path' FROM  'images_tbl' ORDER by 'images_id' DESC";
$sql = mysql_query($select_query) or die(mysql_error());    
while($row = mysql_fetch_array($sql,MYSQL_BOTH))

?-->

<table style="border-collapse: collapse; font: 12px Tahoma;" border="1" cellpadding="5" cellspacing="5">
<tbody><tr>
<td>

<img src="<?php echo $row[" images_path"];="" ?="">"  />">

</td>
</tr>
</tbody></table>

<!--?php

?-->

【讨论】:

【参考方案2】:

修复1:错误名称:改为name="image"以匹配php变量参数。

修复 2:表名的反引号不是单引号。可选:指定列。

【讨论】:

以上是关于在 mysql/phpmyadmin 中上传和显示图像的主要内容,如果未能解决你的问题,请参考以下文章

我不能让这个查询工作......'mysql''phpmyadmin'

导出大型数据库 mysql phpmyadmin

Node.js 无法连接 MySQL、PHPMyAdmin

Wamp MySQL PhpMyAdmin 远程访问配置问题

PHP 4.4.9 和匹配的 mysql、phpmyadmin 和 apache

如何在 MySQL/phpMyAdmin 中恢复数据库?