我无法用php显示sql数据库中的图像。如何显示它?如何一次显示更多图片?

我无法用php显示sql数据库中的图像。如何显示它?如何一次显示更多图片?,php,sql,image,Php,Sql,Image,我试图显示mysql数据库中的图片,但不知怎么的,它不起作用。图片是jpeg格式的。我使用一个简单的php代码和一个数据库连接文件和一个源文件。奇怪的是,如果我想直接从数据库下载图片,它将保持为二进制.bin文件。这是我的密码: db_connect.php: <?php $dbh = new PDO('mysql:host=localhost;dbname=probe', $root); ?> 这里有一些问题,我不确定我在评论中提到的那些卷曲的引用是否是代码的一部分,包括t;这就

我试图显示mysql数据库中的图片,但不知怎么的,它不起作用。图片是jpeg格式的。我使用一个简单的php代码和一个数据库连接文件和一个源文件。奇怪的是,如果我想直接从数据库下载图片,它将保持为二进制.bin文件。这是我的密码:

db_connect.php:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=probe', $root);
?>

这里有一些问题,我不确定我在评论中提到的那些卷曲的引用是否是代码的一部分,包括t;这就是我在数据库中上传图片的方式。你完全正确,因为我使用了来自此站点的代码:。但是我对代码做了一些修改

     <?php
        if(!isset($_FILES['userfile']))
            {
            echo '<p>Please select a file</p>';
            }
        else
            {
            try    {
                upload();

                echo '<p>Thank you for submitting</p>';
                }
            catch(Exception $e)
                {
                echo '<h4>'.$e->getMessage().'</h4>';
                }
            }
        ?>

        <?php 

        function upload(){

        if(is_uploaded_file($_FILES['userfile']['tmp_name']) && getimagesize($_FILES['userfile']['tmp_name']) != false)
            {
            $size = getimagesize($_FILES['userfile']['tmp_name']);
            $type = $size['mime'];
            $imgfp = fopen($_FILES['userfile']['tmp_name'], 'rb');
            $size = $size[3];
            $name = $_FILES['userfile']['name'];
            $maxsize = 100000;
             if($_FILES['userfile']['size'] < $maxsize )
                {
                $dbh = new PDO("mysql:host=localhost;dbname=probe", 'root', '');
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $stmt = $dbh->prepare("UPDATE users SET image='$imgfp', image_type='$type', image_size='$size', image_name='$name' ");
      $stmt->execute();
                }
            else
                {

                throw new Exception("File Size Error");
                }
            }
        else
            {

            throw new Exception("Unsupported Image Format!");
            }
        }
        ?>
这就是我检索图片的方式

<div class="row">
            <div class="col-md-3 col-sm-3">

                <form
                    img src="../reg/source.php" method="get" ></form></div></div>

不清楚这些卷曲的引号“”和“”是否是实际代码的一部分,包括中的t;这是我的错。我应该更仔细地查看它,然后发布正确编码的版本。我很抱歉!在做了更多的挖掘之后,您还缺少了一些id=?要插入select*from users作为示例,因为您不需要绑定任何内容。您可能已经在这里找到了代码-这里是另一个示例答案。这很有帮助,因为我犯了一些平庸的错误,但是我收到了一个损坏的图像文件:@Adam.Biczo可能是一个路径问题。在打开PHP标记后立即在文件顶部添加错误报告,例如@Adam.Biczo。此外,如果blob列太小,无法容纳较大的图像,则需要使用LONGBLOB。可能有很多原因导致您失败。@Adam.Biczo这行$stmt->bindParam$_GET['image'];将其修改为$stmt->bindParam$_GET['image'],PDO::PARAM_LOB;试试看。另外,您的GET方法可能会失败,因为您无法检索它,我们/我对此一无所知。根据我找到的一个例子,是$query->bindColumn1,$image,PDO::PARAM_LOB;甚至可能$query->fetchPDO::FETCH_-BOUND;从-即$row=$stmt->fetchPDO::FETCH_-BOUND提取;建议。@Adam.Biczo最后,因为我能想到的就是删除$num=$stmt->rowCount;以及它的条件语句。我别无选择。?这是你的解决方案吗?是的,我写的。为什么?有什么错误吗?因为我仍然无法回答,正确的解决方案可能是什么。
CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `image` blob NOT NULL,
      `image_type` varchar(100) NOT NULL,
      `image_size` varchar(100) NOT NULL,
      `image_name` varchar(100) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `name` (`name`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=44 ;
$dbh = new PDO('mysql:host=localhost;dbname=probe', $root);
^^^^                                                ^^^^^ unknown
$stmt = $con->prepare( $query ); // minus the "t" of course.
        ^^^^
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
     <?php
        if(!isset($_FILES['userfile']))
            {
            echo '<p>Please select a file</p>';
            }
        else
            {
            try    {
                upload();

                echo '<p>Thank you for submitting</p>';
                }
            catch(Exception $e)
                {
                echo '<h4>'.$e->getMessage().'</h4>';
                }
            }
        ?>

        <?php 

        function upload(){

        if(is_uploaded_file($_FILES['userfile']['tmp_name']) && getimagesize($_FILES['userfile']['tmp_name']) != false)
            {
            $size = getimagesize($_FILES['userfile']['tmp_name']);
            $type = $size['mime'];
            $imgfp = fopen($_FILES['userfile']['tmp_name'], 'rb');
            $size = $size[3];
            $name = $_FILES['userfile']['name'];
            $maxsize = 100000;
             if($_FILES['userfile']['size'] < $maxsize )
                {
                $dbh = new PDO("mysql:host=localhost;dbname=probe", 'root', '');
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $stmt = $dbh->prepare("UPDATE users SET image='$imgfp', image_type='$type', image_size='$size', image_name='$name' ");
      $stmt->execute();
                }
            else
                {

                throw new Exception("File Size Error");
                }
            }
        else
            {

            throw new Exception("Unsupported Image Format!");
            }
        }
        ?>
<div class="row">
            <div class="col-md-3 col-sm-3">

                <form
                    img src="../reg/source.php" method="get" ></form></div></div>