【问题标题】:image does not fetch from database using path图像不使用路径从数据库中获取
【发布时间】:2014-04-16 14:06:51
【问题描述】:

我正在尝试使用路径从数据库上传和获取图像。上传过程完美。但是,我无法从数据库中获取图像。我试过print_r($row['image']);。我得到这样的路径C:/xampp/htdocs/xampp/htdocs/www/images/0d13808ad672c2713d306efbb0e42918。我不知道为什么这段代码没有从 db 中获取图像?

fetch.php

        <?php
            include('config.php');
            ini_set('display_startup_errors',1); a
            ini_set('display_errors',1);
            error_reporting(-1);

            try
            {
                  $stmt = $conn->prepare("SELECT * FROM imgdb WHERE id = 3");
                  $conn->errorInfo();
                  // $stmt->bindParam('1', $imgid, PDO::PARAM_INT);
                  $stmt->execute();

                  // $path = "/xampp/htdocs/www/images/";
                  // $imgpath = $_SERVER['DOCUMENT_ROOT'].$path;
                   while($row = $stmt->fetch(PDO::FETCH_ASSOC))
                    {
                        echo "<img src=".$row['image']." height='100' width='100'/>"; 
                        print_r($row['image']);
                    }
            } 
            catch (PDOException $e) 
            {
                 echo 'Database Error'.$e->getMessage();
            }
        ?>

上传.php

<?php

    ini_set('display_startup_errors',1);
    ini_set('display_errors',1);
    error_reporting(-1);

      include('config.php');

      if ($_FILES["file"]["error"] > 0)
      {
          echo "Error: " . $_FILES["file"]["error"] . "<br>";
      }
      else
      {
//          echo "Upload: " . $_FILES["file"]["name"] . "<br>";
//          echo "Type: " . $_FILES["file"]["type"] . "<br>";
//          echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
//          echo "Stored in: " . $_FILES["file"]["tmp_name"];
      }


      $filename  = basename($_FILES['file']['tmp_name']);
      $newname = md5($filename);

      $final_save_dir = '/xampp/htdocs/www/images/'.$newname ;
        if(move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $_FILES['file']['name'])) 
        {
            echo "Uploaded";
        } 
        else 
        {
           echo "File was not uploaded";
        }

      $imgid = $_SERVER['DOCUMENT_ROOT'].$final_save_dir;

      try
      {
          $stmt = $conn->prepare("INSERT INTO imgdb ( image ) VALUES ( ? ) ");
          $stmt->bindParam('1', $imgid, PDO::PARAM_STR);
          $conn->errorInfo();
          $stmt->execute();
      }
      catch (PDOException $e) 
      {
          echo 'Database Error'.$e->getMessage();
      }
?>

【问题讨论】:

  • 所以这个 C:/xampp/htdocs/xampp/htdocs/www/images/0d13808ad672c2713d306efbb0e42918 是什么进入 img 标签?
  • 喜欢这个 0d13808ad672c2713d306efbb0e42918Jellyfish。以原始文件名结尾。
  • 你想要完整路径还是只是相对路径?,加上你缺少 img 的扩展名
  • @RicardoBarros:完整路径...
  • 不,你不想要你的htdocs的相对路径,你想在浏览器中显示图像,给我一秒钟,我会做一个例子给你测试

标签: php mysql database image fetch


【解决方案1】:

一直在尝试使用此代码从我的数据库中检索图像,但它只显示一个空白页。需要帮忙

   $user="root";
   $host="localhost";
   $pass="name";
   $db="name";

   $link=mysql_connect($host,$user,$pass);
   if(!$link)die(mysql_error());
   mysql_select_db($db,$link) or die("could not select database.");

 $query_image = "SELECT * FROM img WHERE id=12";
 // This query will show you all images if you want to see only one image pass  acc_id='$id' e.g. "SELECT * FROM acc_images acc_id='$id'".
 $result = mysql_query($query_image);
 if(mysql_num_rows($result) > 0)
 {
   while($row = mysql_fetch_array($result))
   {
  echo '<img alt="" src="upload/'.$row["img_base_name"].'">';
   }
 }
 else
 {
  echo 'File name not found in database';
 }
?>

【讨论】:

    【解决方案2】:

    试试这个并与你的比较,我不知道它是否有效,因为我没有测试过,但它应该。

    上传.php

    include('config.php');
    
    if ($_FILES["file"]["error"] > 0 )
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
      else
    {
        $filename  = basename($_FILES['file']['tmp_name']);
        $ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
    
        $new_file_name = md5($filename).'.'.$ext;
    
        $final_save_dir = $_SERVER['DOCUMENT_ROOT'].DS.'www'.DS.'images'.DS;
        if(move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $new_file_name)) 
        {
            echo "Uploaded";
        } 
        else 
        {
           echo "File was not uploaded";
        }
    
        try
        {
            $stmt = $conn->prepare("INSERT INTO imgdb ( image ) VALUES ( ? ) ");
            $stmt->bindParam('1', $new_file_name, PDO::PARAM_STR);
            $conn->errorInfo();
            $stmt->execute();
        }
        catch (PDOException $e) 
        {
          echo 'Database Error'.$e->getMessage();
        }
    }
    

    fetch.php

    <?php
    include('config.php');
    ini_set('display_startup_errors',1); 
    ini_set('display_errors',1);
    error_reporting(-1);
    
    try
    {
          $stmt = $conn->prepare("SELECT * FROM imgdb WHERE id = 3");
          $conn->errorInfo();
          $stmt->execute();
    
           while($row = $stmt->fetch(PDO::FETCH_ASSOC))
            {
                echo "<img src='images/".$row['image']."' height='100' width='100'/>"; 
            }
    } 
    catch (PDOException $e) 
    {
         echo 'Database Error'.$e->getMessage();
    }
    

    【讨论】:

    • 您能否检查一下您的 xampp/htdocs/www/images 并检查该 img 是否存在?
    • 感谢我对您的代码做了一些更改。现在这两个功能都运行良好...
    【解决方案3】:

    两件事

    1. move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $_FILES['file']['name']) 将文件从临时位置移动到$final_save_dir.$_FILES['file']['name'],这与您存储在数据库中的值不同,即$_SERVER['DOCUMENT_ROOT'].$final_save_dir。您需要同步这两个变量。

    2. 就像@mrgeek 指出的那样,您正在尝试使用绝对文件系统路径而不是使用 http url 来检索图像。如果您使用的是文件系统路径,则需要在该位置前使用file:///。但我确信这将被托管在某个地方,所以这无济于事。所以最好的办法是使用相对网址,以便浏览器能够访问它

    【讨论】:

    • 好的,我会使用相对 url 方法。有什么例子吗?
    • 你大概可以参考这个stackoverflow.com/questions/19077075/…。但是您需要根据图像的实际位置、文件夹的结构等来执行此操作
    【解决方案4】:

    链接图像时,必须链接到 HTTP 可访问路径。 使用 '/' 而不是 $_SERVER['DOCUMENT_ROOT'] 来获得相对于您网页的 Web 根目录或 'http://' 的路径。 $_SERVER['HTTP_HOST'] 。 '/'(第一个更好,因为没有定义协议,所以它可以在 http 和 https 连接上工作)

    【讨论】:

    • 如果你也想存储完整路径,你已经有了解决方案,但是你不能直接链接到完整路径,因为
    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多