MySQL返回破碎的图像

时间:2016-01-27 21:47:15

标签: php mysql sql

在过去的几天里,我一直在开发一个应用程序,让用户上传图像并将图像存储在我的文件系统和数据库中的文件路径中。我差不多完成了,但我遇到了一堵砖墙。

图像上传到我的文件系统,文件路径存储在我的数据库中就好了。当我转到显示图像的页面时。它将它们作为 "破碎的图像"

这里是给我带来麻烦的代码

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$uname = $_SESSION['username'];
$userid = $_SESSION['id'];
?>

<!DOCTYPE html>
<html>
<head>
<title>OurFile's  Page</title>
</head>
<body>
<?php
require("pdoconn.php");
//img_path is the column in my DB that holds the image URL.
$stmt = $conn->prepare("SELECT img_path FROM ourimages");
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_BOTH)) 
{
echo '<br><img src="' . $result['img_path'] . '" />';
}
$conn = null;
?>
</body>
</html>

任何帮助都会被挪用。

感谢您将来的回复 我编辑了代码。使用ed和jay的建议......但它仍然存在 输出相同的结果

2 个答案:

答案 0 :(得分:2)

你不能这样做:

<img src="<?php echo $value; ?>" />

因为您使用$value循环遍历表中的每一列。 src属性需要是一个URL,但我猜测ourimages表中只有一列包含一个URL。您正在输出每个列的图像,原因如下:

$stmt = $conn->prepare("SELECT * FROM ourimages"); // gets every column
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_BOTH);
foreach ($result as $value) // uses every column
{

简单的解决方法是更改​​SQL:

$stmt = $conn->prepare("SELECT whateverColumnHasTheURL FROM ourimages");

然后像这样使用该列:

<img src="<?php echo $result->whateverColumnHasTheURL; ?>" />

或者,您可以使用SELECT * ...,但只需使用<img>代码中的一列:

$stmt = $conn->prepare("SELECT * FROM ourimages");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_BOTH);
echo "<br>";?> <img src="<?php echo $result->whateverColumnHasTheURL; ?>" /><?php

注意:如果您实际上是在尝试遍历行,则需要将$stmt->fetch置于循环中,如while ($result = $stmt->fetch(PDO::FETCH_BOTH);) { echo... }

答案 1 :(得分:1)

使用foreach循环输出查询结果是一种有趣的处理方式。大多数人都使用这样的while循环:

while($result = $stmt->fetch(PDO::FETCH_BOTH)) 
{
    echo '<br><img src="' . $result['column_with_image_path'] . '" />';
}

由于您选择了表格中的所有列,因此您需要具体说明您在图片代码中使用的标识符。