从显示相同图像的数据库显示图像

时间:2013-05-24 03:26:05

标签: php database image png blob

我正在尝试显示来自数据库的图像,但我能够得到它,但问题是,即使我上传了不同的图像,它也会显示相同的图像。

这是我的代码:

<?php 
$con = mysql_connect('localhost','root','')
or die(mysql_error());
mysql_select_db ("dbname");

$query = "SELECT * FROM news ORDER BY date DESC";
$result = mysql_query($query);
echo "<table align='center'>";

while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td>";
echo "<img src='getImage.php?id='".$row['id']."' height='230px' width='300px'> <br /><br />";   

//Some codes here...

echo "</table>";
mysql_close($con);
?> 

getImage.php

<?php 
$con = mysql_connect('localhost','root','')
or die(mysql_error());
mysql_select_db ("dbname");

$query = "SELECT * FROM news ORDER BY date DESC";
$result = mysql_query($query);

header("Content-type: image/png");
while($row = mysql_fetch_assoc($result))
{
echo $row['image'];
}
mysql_close($con);
?> 

PLS。帮助我...

2 个答案:

答案 0 :(得分:1)

您的问题是 getImage.php 未在查询字符串中返回 id 的相应图像。你的源代码总是会返回最新消息的图片,对吗?

尝试替换它:

$query = "SELECT * FROM news ORDER BY date DESC";

$query = "SELECT * FROM news WHERE id = {$_GET['id']} LIMIT 1";

答案 1 :(得分:1)

因为我很懒,所以我假设id在这里是数字。

getImage.php

我们需要告诉getImage.php获取具有我们想要的ID的图像。

$id = intval($_GET['id']); 
//Forces $id to be numeric.  You wouldn't have to worry about doing this if
//you used prepared statements.  Like those in John Conde's links.
$query = "SELECT * FROM news WHERE `id`=$id";

就像现在一样,getImage.php实际上正在输出你的所有图像。但是,您只能看到具有最新日期的那个。这是因为由于ORDER BY子句,它是由脚本检索的第一个。

此外,在您的显示循环中,更改此:

echo "<img src='getImage.php?id='".$row['id']."' height='230px' width='300px'> <br /><br />";   

到此:

echo "<img src='getImage.php?id=".$row['id']."' height='230px' width='300px'> <br /><br />";

删除了id =和它的数字之间的额外单引号,这样这个数字实际上会发送到你的脚本。