0

各位开发者您好!我正在尝试从我的数据库中检索图像以将其包含在我创建的这个表中。我在 Google 上查找的所有示例都是从仅包含图像的 1 个表中检索图像,但在这种情况下,我无法使其正常工作。

<?php
                    $Con = mysql_connect('localhost','root','');
                      if($Con === false)
                      {
                        echo "Not Connected";
                      }

                      else
                      {


                        $select = mysql_select_db("symfony");
                        $TableName = "main";
                        $SQLstring = "SELECT * FROM $TableName ";
                        $QueryResult = mysql_query($SQLstring);
                        $Row = mysql_fetch_row($QueryResult);
                            do {


                                echo "<div class='art-content-layout'>";
                                echo "<div class='art-content-layout-row'>";
                                echo "<div class='art-layout-cell' style='width: 33%'>";
                                echo"   <p><img width='259' height='194' class='art-lightbox' name='image' src='../images/3.jpg'><br></p>";
                                echo "</div>";
                                echo "<div class='art-layout-cell' style='width: 67%'>";
                                echo "<p></p>";
                                echo "<table border>";
                                echo "<tbody>";
                                echo "<tr>";
                                echo "<tr>";
                                    echo "<th colspan='3' align='left'><b> Owner : $Row[0]</b></th>";
                                echo "</tr>";
                                echo "<tr>";
                                    echo "<td colspan='3'><b>$Row[1]:</b>";

                                   echo  "</td>";
                                echo "</tr>";

                                echo "<tr>";
                                    echo "<td><b>Price:$Row[9] US Dollar </b></td>";
                                echo "</tr>";
                                echo "<tr>";
                                    echo "<td><b> City: $Row[4] </br> Hood: $Row[4] </br> Qdr: $Row[5] </br> Street:$Row[6] </br> Property Number :$Row[7] </br> Room Number : $Row[8] </b></td>";
                                    echo" <td><b>Description : $Row[10] </b></td>";

                                echo "</tr>";
                                echo"<tr>";
                                    echo" <td><b>Type : $Row[12] </b></td>";
                                    echo "<td><b>Contact : $Row[1] </b></td>";
                                echo "</tr>";
                                echo "</tr>";
                                echo "</tbody>";
                                echo "</table> <br><p></p>";

                                echo "</div>";
                                echo "</div>";
                                echo "</div>";
                                $Row = mysql_fetch_row($QueryResult);
                                } while ($Row);     
                        }   
                ?> 

我试图这样做,它仍然没有工作:

$img = $Row[15];
//column 15 is the Blob the image
                        $img = mysql_fetch_array($QueryResult);
                            $content = $img['15'];
                            //header('Content-type: image/jpg');
4

4 回答 4

2

我假设您只是在回显期望看到图片的图像的二进制源。这不是图片的工作方式。通常在这种情况下,您会在表格中回显一个图像标签,该标签链接到另一个传递 id(或其他唯一标识符)的脚本。另一个脚本从数据库中提取图像并发送正确的标头。就像是:

//in the table where you want to show the image
//assuming id is in column 0, change to whatever 
echo "<img src='image.php?id={$Row[0]}'>";

然后创建一个脚本 image.php

//send out image header
header('Content-type: image/jpg');

//get the id from the url
$id = isset($_GET['id'])?(int)$_GET['id']:0;

if($id > 0){
    //query database for image blob
    $sql = "SELECT `imageData` FROM `table` WHERE `id`={$id}";

    if($numRows){
        //echo out the blob data
        echo $Row[0];
    } else {
        //no row found in database, echo default image
        readfile("/path/to/noImage.jpg");
    }
} else {
    //invalid id passed, echo default image
    readfile("/path/to/noImage.jpg");
}

你仍然需要做连接/查询的事情,实际上你应该使用 PDO/mysqli 因为 mysql_* 函数已被弃用并标记为删除。这应该让你开始。

于 2013-01-16T21:25:11.763 回答
2

你不能做你想做的事。您需要将逻辑分成两个脚本。确实没有办法在与其他数据相同的过程中获取图像数据,因为 IMG 标签被提供了一个不是原始数据的 SRC,而是要求服务器提供图像。

在生成 HTML 的当前脚本中,您只需要让 IMG 标记将 SRC 引用为执行检索图像数据工作的新脚本。就像是:

echo"   <p><img width='259' height='194' class='art-lightbox' name='image' src='display_image.php?id=" . $Row[0] . "'><br></p>";

我假设 $Row[0] 持有当前记录的唯一键。然后编写另一个脚本 display_image.php,它只获取图像数据并使用正确的标题来显示它:

$currentId = $_REQUEST['id'];
//  Your query code would be here using the $currentId to just retrieve the desired record
$SQLstring = "SELECT your_image_column_name FROM $TableName WHERE id = $currentId";
$QueryResult = mysql_query($SQLstring);
$img = mysql_fetch_array($QueryResult);
$content = $img['your_image_column_name'];
header('Content-type: image/jpg');
echo $content;
于 2013-01-16T21:27:06.703 回答
1

如果要在字符串中使用数组项,请使用{}围绕它,或使用字符串连接:

$row = array(1,2,3);
echo "this is item1: {$row[0]}";
echo "and this is item2: ".$row[1];
于 2013-01-16T21:15:00.410 回答
0

我讨厌成为放弃的孩子,但在创建 image.php 之后

<?php
                $Con = mysql_connect('localhost','root','');
                  if($Con === false)
                  {
                    echo "Not Connected";
                  }
                  else
                  {
                        $select = mysql_select_db("symfony");
                        $id = $_REQUEST['id'];
                        $query = mysql_query("SELECT image1 FROM main WHERE id='".$id."'");
                        $row = mysql_fetch_array($query);
                        $content = $row['image1'];
                        header('Content-type: image/jpg');
                                 echo $content;
                  }
            ?> 

然后是html

                        echo"   <p><img width='259' height='194' class='art-lightbox' name='image' src='image.php?id=".$Row[16]."'><br></p>";
// where $row[16] is the image Column

之后我收到一个错误:

图像无法显示,因为它包含错误

我尝试上传不同的类型。我不知道在数据库中设置 mime 类型是否也很重要。我什至使用了这个家伙教程:

第 1 部分 第 2 部分

现在毕竟这一切!我的解决方案只是将文件移动到服务器上的某个位置!保存名称而不是 Blob,然后检索图像的名称,这将是文件夹上的路径!

于 2013-01-17T00:35:23.730 回答