0

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

这是我的代码:

<?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);
?> 

获取图像.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);
?> 

请。帮我...

4

2 回答 2

1

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

尝试替换这个:

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

$query = "SELECT * FROM news WHERE id = {$_GET['id']} LIMIT 1";
于 2013-05-24T04:15:38.673 回答
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= 和它的数字之间的额外单引号,这样数字实际上会发送到您的脚本。

于 2013-05-24T04:17:20.147 回答