繁体   English   中英

如何使用pdo或mysqli从同一页面的数据库(blob列)中获取图像? 的PHP

[英]How to get images from database (blob column) on the same page using pdo or mysqli ?? PHP

我面临从数据库获取图像的问题。 我也浏览了很多堆栈和其他网站的文章,但是没有一个我正在寻找的解决方案。 如何获取页面上存储在数据库中的图像?

这是代码,请检查一下并让我知道我犯了什么错误。 非常感谢所有帮助。

<?php
    // I have database name databaseimage
    // I have a table named store
    // I have 3 columns into the table store
    // id (int primary key ai), name (varchar), and image (longblob)

// prevent accesing the page directly
if($_SERVER['REQUEST_METHOD'] !='POST') {
    echo "you can not acces this page directly";
    die();
} 
else {

print_r($_FILES);


// file properties

$file = $_FILES['image']['tmp_name'];
echo "<br>$file";

if(!isset($file)){
    echo "please select an image";
    die();
} else {
//actual image
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])) ;

 // image name
    $image_name = addslashes($_FILES['image']['name']);
    echo "<br> image name is = $image_name";

//geting image size to check whether it is actually an image or not
$image_size = getimagesize($_FILES['image']['tmp_name']); 
echo "<br>";
print_r($image_size);

    if($image_size==FALSE) {
        echo "plese select an images only";
            die();
        }
    else {

        #code to put an image into the database

                // connect to database

try {
    $con = new PDO("mysql:host=localhost;dbname=databaseimage", "root",
     "");
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "<br>connection succesfull";

    // make a query
    $extr = $con->prepare("INSERT INTO store (name, image) 
                                    VALUES (:na , :im)" );

    //$a=1;
    //$extr->bindParam(':i', $a);
    $extr->bindParam(':na', $image_name);
    $extr->bindParam(':im', $image, PDO::PARAM_LOB);

    if ( $extr->execute()==true) {
        echo "<br>image uploaded succesfully";

 # insert is working. I can insert images into database

 # but really facing problem while displaying those images
 # below is the code I tried

 # CODE for to show uploaded files
 #  to show images which is uploaded
        $show = $con->prepare("SELECT * FROM store ");
        //$a = 1;
        //$show->bindParam(':iam', $a);
        $show->execute();



        while ($row = $show->fetch(PDO::FETCH_BOUND) ) {
            # SHOW IMAGES 

             //echo "<img src = '$row[image]' alt='image'  >";
echo '<img src= "data:image/png;base64,'.base64_encode($row['image']).'" 
                                    height="100" width="100" />';
        }


} else {
    echo "<br>image not uploaded";
    }

}
catch(Exception $e)
    {
    echo "<br> Connection failed: " . $e->getMessage();
    }
        }
}

// disconnect the connection
$con = null;
}
?>

第1步:使用以下代码创建一个文件名为getimage.php的php脚本:

<?php
$id = $_GET['id'];
// do some validation here to ensure id is safe

$con = new PDO("mysql:host=localhost;dbname=databaseimage", "root",
 "");  
$sql = "SELECT image FROM store WHERE id=$id";
$stmt=$con->query($sql);
$res=$stmt->fetch(PDO::FETCH_ASSOC);
$con=null;    

header("Content-type: image/pn")g;
echo $res['image'];
?>

第2步:在您当前的php页面中(在注释“下面的#是我尝试过的代码”下面)尝试以下代码:

$show = $con->prepare("SELECT id FROM store ");
//$a = 1;
//$show->bindParam(':iam', $a);
$show->execute();

while ($row = $show->fetch(PDO::FETCH_NUM) ) {
    # SHOW IMAGES              
    echo '<img src="getimage.php?id="'.$row[0].'" 
                                height="100" width="100" />';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM