使用PHP从SQL数据库中存储的URL显示图像

时间:2016-04-10 02:54:18

标签: php mysql image

我正在尝试在表格中显示来自SQL数据库的图像(使用数据库中的URL)。

我对这种类型的实现还是很陌生,所以我一直在尝试进行研究但是没有找到使用URL的相关信息(反对使用BLOB或直接将数据添加到数据库) )。我绝对想把我的图像保存在文件系统上。目前我的代码只显示了URL(显然),但我尝试过一些事情......

我试过了:
- 将$ row [“card_image”]传递给PHP变量$ image并使用$ image-> load()
- 使用"<img src="$row["card_image"]">"(我想到,因为我得到一个链接输出仍然可以工作......)
- 我还尝试了一些我在Stack Overflow上发现的其他解决方案,但我相信这些解决方案主要用于BLOB数据类型,因此它们也无法产生我想要的输出(I.E.
"<img src="data:image/jpeg;base64,'.base64_encode($image->load())'" />"

这是我目前的代码:

SQL(我已经压缩字段以节省空间)

    CREATE TABLE cards (
    card_image VARCHAR(999)
    );

insert into cards (card_image)
values ('http://localhost/dbztc/wp-content/uploads/2016/04/1.jpg');

PHP

// Create connection
$conn = new mysqli($servername, $username, $password, $db);

if(!$conn)
{
die("connection failed");
}

//Table
echo "
        <table cellpadding=\"0\" cellspacing=\"2\" border=\"0\" width=\"100%\">
            <tr bgcolor=\"#666666\">
                <td colspan=\"5\" align=\"center\"><b><font color=\"#FFFFFF\">" . $table[0] . "</font></td>
            </tr>
            <tr>
                <td>Image</td>
                <td>Card Number</td>
                <td>Card Rarity</td>
                <td>Card Name</td>
                <td>Card Type</td>
                <td>Card Style</td>
                <td>Card Text</td>
            </tr>";

$sqlquery = "SELECT card_image, card_number, card_rarity, card_title, card_type, card_style, card_text FROM cards";
$result = mysqli_query($conn, $sqlquery);
//$image = $row["card_image"];

if (mysqli_num_rows($result) > 0) {

    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "<td>" . $row["card_image"] . "</td>" . "<td>" . $row["card_number"]. "</td>" . "<td>" . $row["card_rarity"] . "</td>" . "<td>" . $row["card_title"] . "<td>" . $row["card_type"] . "</td>" . "<td>" . $row["card_style"] . "</td>" . "<td>" . $row["card_text"] . "</td></tr>";
    }
} else {
    echo "0 results";
}

echo "</table>";

mysqli_close($conn);

2 个答案:

答案 0 :(得分:0)

而不是:

<td>" . $row["card_image"] . "</td>

尝试:

$image = $row["card_image"]; // the image url

<td><img src='". $image . "'></td> 

答案 1 :(得分:0)

对于任何偶然发现并可能遇到同样问题的人:

对于初学者,我从数据库条目中取出整个网址,并将其替换为仅限文件名。

之后,我编辑了我的代码:

// output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "<td>" . "<img src ='../images/" . $row["card_image"] . "'>" . "</td>" . "<td>" . $row["card_number"]. "</td>" . "<td>" . $row["card_rarity"] . "</td>" . "<td>" . $row["card_title"] . "<td>" . $row["card_type"] . "</td>" . "<td>" . $row["card_style"] . "</td>" . "<td>" . $row["card_text"] . "</td></tr>";
        echo "<br />";

它现在显示完美。就像一张纸条,这是在与本地相对的实时服务器上完成的,这可能也会产生影响?不确定,但希望这可以帮助别人!