如果没有更多关于如何将图像上传到数据库的内容,我已经搜索了一两个星期的高或低一个星期或两个小时。我知道有些人可能会说它不推荐但我想为我正在研究的项目做这件事。
我正在使用本地服务器XAMPP
PHP Version 5.6.3 ----客户端API版本mysqlnd 5.0.11
并插入此图片并且可以正常工作
http://ctd-web.fr/blog/wp-content/uploads/2009/06/php.jpg
这是我如何将图像插入数据库
<html>
<body>
<form action="lastimagetest.php" method="POST" enctype="multipart/form- data">
<input type="file" name="image"><input type="submit" name="submit" value="Upload">
</form>
<?php
if(isset($_POST['submit']))
{
TRY{
$pdo = new PDO('mysql:host=localhost;dbname=database;','root');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $e){
echo $e->getMessage();
die();
}
var_dump($pdo);
$imageName = ($_FILES["image"]["name"]);
$imageData = (file_get_contents($_FILES["image"]["tmp_name"]));
$imageType = ($_FILES["image"]["type"]);
if(substr($imageType,0,5) == "image")
{
TRY{
$results = $pdo->prepare("INSERT INTO cspposts (name, image, type)VALUES(?,?,?)");
$results->bindParam(1, $imageName);
$results->bindParam(2, $imageData, PDO::PARAM_LOB);
$results->bindParam(3, $imageType);
$results->execute();
}catch(PDOException $e){
exit('Database error. Sorry please try again later.');
}
echo "Working code";
}
else
{
echo "only images";
}
//print_r($_FILES["image"]);
}
?>
<br>
<img src="showimage.php?id=173">
</body>
</html>
我知道id = 173就在那里,而id 173在数据库中
这一切都很好,并将数据插入表
phpMyAdmin中的表
id是一个int - AUTO_INCREMENT name是varchar(50) 图像是longblob type是varchar(10)
然后我尝试使用代码
从数据库中恢复图像<?php
TRY{
$pdo = new PDO('mysql:host=localhost;dbname=database;','root');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $e){
echo $e->getMessage();
die();
}
if(isset($_GET['id']))
{
$id = ($_GET['id']);
$query = $pdo->prepare("SELECT * FROM cspposts WHERE id = ?");
$query->bindParam(1, $id)
$query->execute();
while($row = $query->fetch(PDO::FETCH_ASSOC)){
echo $row["image"];
}
header("content-type: image/jpeg");
}
else
{
echo"Error!";
}
?>
结果只是一张破碎的图像
拜托,我希望有人能帮助我得到结果。
非常感谢