[mysql]上传和检索图像在 php 中的数据库

标签: sql MySQL PHP
发布时间: 2017/4/9 22:01:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

index.php:

<html>
<head>
<title>upload images</title>
</head>
<body> 
<form action="index.php" enctype="multipart/form-data" method="post">
<table style="border-collapse: collapse; font: 12px Tahoma;" border="1" cellspacing="5" cellpadding="5">
<tbody><tr>
<td>
<input name="uploadedimage" type="file">
</td>
</tr>
<tr>
<td>
<input name="Upload Now" type="submit" value="Upload Image">
</td>
</tr>
</tbody></table>
</form>

<?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(isset($tmp_name)){
if(move_uploaded_file($tmp_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");
} 
}
}
?>
</body>
</html>

mysqlconnect.php:

<?php
/**********MYSQL Settings****************/
$host="localhost";
$databasename="karma";
$user="root";
$pass="";
/**********MYSQL Settings****************/
$conn=mysql_connect($host,$user,$pass);
if($conn)
{
$db_selected = mysql_select_db($databasename, $conn);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}
}
else
{
    die('Not connected : ' . mysql_error());
}
?>

这上面的脚本时时不显示错误消息。和没有图像不包含在数据库中。

我可能知道如何上传和从数据库中检索图像吗?

谁能帮我吗?

在此先感谢!!!

解决方法 1:

问题,导致失败的代码如下︰

更改的所有实例 $tmp_name 代码中对 $temp_name

这是 if(isset($tmp_name))if(move_uploaded_file($tmp_name, $target_path))

因为你使用的 $temp_name=$_FILES["uploadedimage"]["tmp_name"]; ,因此您使用了错误的变量,是 (顺便) 未定义。

此外,如前所述在评论区;下面这行︰

INSERT into 'images_tbl' ('images_path','submission_date')

当引用的表和列,报价不会被使用。它们裹反引号,或者删除它们。

例如︰

INSERT INTO `tablename` (`column1`,`column2`)

INSERT INTO tablename (column1,column2)

反引号主要用来防止使用保留的字,或者如果碰巧使用,单词之间的空格或连字符用作一个单词分隔符。(只是快速的 FYI 旁注)。

这些保留字的列表,请访问 MySQL.com 网站︰

开发人员的提示︰

在开发过程中,使用正确的错误报告是至关重要的。

您的文件的顶部添加以下内容将帮助任何错误的信号,如果发现任何︰

error_reporting(E_ALL);
ini_set('display_errors', 1);

最后︰

本代码是开放给SQL 注入。使用 mysqli_* 与预准备语句,或PDO预准备语句

例子可以在这些页面中找到。

官方微信
官方QQ群
31647020