在 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<input type="file" name="file_upload" />
所以用$_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'
Wamp MySQL PhpMyAdmin 远程访问配置问题