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());
}
?>
当我运行上面的脚本时,没有显示错误。并且数据库中没有图像。
我可以知道如何从数据库上传和检索图像吗?
有谁能够帮助我?
提前致谢!!!
导致您的代码失败的问题如下:
$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)
反引号通常用于防止使用保留字,或者在使用的字之间恰好有空格,或者如果将连字符用作字分隔符,则应使用反引号。(仅供参考)。
有关这些保留字的列表,请访问MySQL.com网站:
开发人员提示:
在开发过程中使用正确的错误报告至关重要。
将以下内容添加到文件顶部将帮助您发现任何错误(如果发现任何错误):
error_reporting(E_ALL);
ini_set('display_errors', 1);
最后:
您当前的代码可以进行SQL注入。mysqli_*
与准备语句一起使用,或与准备语句一起使用PDO。
在这些页面中可以找到示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句