如何使用php在数据库中插入和检索图像
我试图上传一个成员档案的图像,并使用php将其存储在数据库中,然后检索它,但它对我不起作用 这就是我尝试插入图像的原因:如何使用php在数据库中插入和检索图像,php,mysql,html,upload,Php,Mysql,Html,Upload,我试图上传一个成员档案的图像,并使用php将其存储在数据库中,然后检索它,但它对我不起作用 这就是我尝试插入图像的原因: <html> <head> <title> Upload an image </title> </head> <body> <form action="index.php" method="POST" enctype="multipart/from/data"> File: <i
<html>
<head>
<title> Upload an image </title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/from/data">
File:
<input type="file" name="image" > <input type="submit" value="upload">
</form>
</body>
</html>
<?php
mysql_connect("localhost", "root","") or die ("could not connect to the server");
mysql_select_db("project") or die ("that database could not be found");
$file = $_FILES['image']['tmp_name'];
if (!isset($file))
echo "please select file";
else
{
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if($image_size == FALSE)
echo "that not image ";
else
{
if (!$insert= mysql_query("INSERT INTO user_info (image) VALUES ('$image')"))
echo "Problem";
else
{
echo "image: <p /> your image <p /><img src='view.php?id="id"'>";
}
}
}
上传图像
文件:
我想你应该重新想想你在做什么
为什么要将文件存储在mysql数据库中?我是说这有什么意义
文件系统是用于存储文件的专家数据库。
因此,最好不要将文件保存在普通数据库中,而是保存在文件系统中
图像可以用目录(0102003.gif)中的数字命名,也可以通过mysql记录中的文件名进行寻址
如果你真的需要在数据库中存储文件,mysql不是这个工具
看看mongoDB
PS:mysql接口已弃用,请使用mysqli或PDO。要在php网站上存储图像,只需将文件放入目录并将文件名保存在mysql数据库中即可。祝你好运 试试这段代码,它会帮你的
<?php
mysql_connect("localhost", "root","") or die ("could not connect to the server");
mysql_select_db("database1") or die ("that database could not be found");
$file = $_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
mysql_query("INSERT INTO table1 (id,image) VALUES ('1','{$image}')");
?>
我希望您能充分利用这一点:-
表单声明中需要enctype=multipart/form数据。并通过$\u FILES变量而不是$\u POST变量访问该文件。比如:
<form action="testimage1.php" method="post" enctype="multipart/form-data"> <input name="uploadimage" type="file" /> </form> <?php $filename = $_FILES['uploadimage']['tmp_name']; ?>
有两种不同的方法可以插入和检索图像:
方法1:
<?php
//Get uploaded file data
$img_tmp_name = $_FILES['image']['tmp_name'];
$img_name = $_FILES['image']['name'];
$img_size = $_FILES['image']['size'];
$img_type = $_FILES['image']['type'];
$img_error = $_FILES['image']['error'];
//Processed uploaded img data
if($img_error > 0)
{
die('Upload error or No img uploaded');
}
$handle = fopen($img_tmp_name, "r");
$content = fread($handle, $img_size);
fclose($handle);
$encoded_content = addslashes($content);
$query="insert into user_info (img_content,img_type) values('".$encoded_content."','".$img_type."')";
$ex=mysqli_query($conn,$query);
if($ex){
echo "image uploaded";
}
else{
echo "image not uploaded<br/>".mysqli_error($conn);
}
?>
<?php
$target_dir = "image/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
move_uploaded_file($_FILES["image"]["tmp_name"], $target_file);
$query="insert into user_info (img_path) values('".$target_file."')";
$ex=mysqli_query($conn,$query);
if($ex){
echo "image uploaded";
}
else{
echo "image not uploaded<br/>".mysqli_error($conn);
}
?>
<?php
$query="select * from user_info WHERE id='".$id."'";
$ex=mysqli_query($conn,$query);
$row=mysqli_fetch_array($ex)
?>
<img src="<?php echo $row['img_path']; ?>" alt=""/>
将整个图像存储在数据库本身的longblob
中,然后从数据库中检索它
插入图像:
<?php
//Get uploaded file data
$img_tmp_name = $_FILES['image']['tmp_name'];
$img_name = $_FILES['image']['name'];
$img_size = $_FILES['image']['size'];
$img_type = $_FILES['image']['type'];
$img_error = $_FILES['image']['error'];
//Processed uploaded img data
if($img_error > 0)
{
die('Upload error or No img uploaded');
}
$handle = fopen($img_tmp_name, "r");
$content = fread($handle, $img_size);
fclose($handle);
$encoded_content = addslashes($content);
$query="insert into user_info (img_content,img_type) values('".$encoded_content."','".$img_type."')";
$ex=mysqli_query($conn,$query);
if($ex){
echo "image uploaded";
}
else{
echo "image not uploaded<br/>".mysqli_error($conn);
}
?>
<?php
$target_dir = "image/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
move_uploaded_file($_FILES["image"]["tmp_name"], $target_file);
$query="insert into user_info (img_path) values('".$target_file."')";
$ex=mysqli_query($conn,$query);
if($ex){
echo "image uploaded";
}
else{
echo "image not uploaded<br/>".mysqli_error($conn);
}
?>
<?php
$query="select * from user_info WHERE id='".$id."'";
$ex=mysqli_query($conn,$query);
$row=mysqli_fetch_array($ex)
?>
<img src="<?php echo $row['img_path']; ?>" alt=""/>
echo“图像有问题:您的图像”代码>?@DaveChen但即使我删除了它,代码也不会插入任何东西。我强调了一个语法错误。你的脚本根本不应该运行。@DaveChen好的,我会的,但是为什么插入不起作用?同意!但是小精灵呢?小于文件页面大小?事实上也是一样,数据库服务器存储有页面边界的blob,所以大小通常没有差别。为什么要麻烦呢?同时将多个图像加载到PHP内存中很可能会导致“内存不足”错误。将文件保存到文件系统,仅存储路径。