我在显示从数据库中查询过的图像时遇到问题。循环查询结果中的数组并提取图像名称,然后传递给也包含图像路径的变量。但是,当变量包含在输出中时,会显示撕裂的图像图标(无图像)。
代码:
public function loadImages($item) {
$type = $item;
$conn = $this->create_connection('read');
$sql = "SELECT * FROM `items` WHERE catagory='$type'";
$result = $conn->query($sql)or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
$path = '../images/thumbs/'.$row['image_path'];
//var_dump($path);
echo '<li><img src="../images/thumbs/'.$path.'"/></li>';
}
当我var_dump
$path
时,它会显示正确的文件路径:string(28) "../images/thumbs/image1.jpeg"
,还有七个项目,因此我不会丢失数据。我可以确认路径是否正确,当我回显完整路径和图像名称时,图像显示正确。
echo '<li><img src="../images/thumbs/image1.jpg"/></li>';
此外,我尝试删除$path
变量并直接应用$row
:
echo '<li><img src="../images/thumbs/'.$row['image_path'].'"/></li>';
我认为问题在于加入两个字符串,所以我尝试用$full_path
替换图像变量,这也不起作用:
$full_path = $path . $row['image_path'];
$row
是正确的,因为当我为var-dump
执行$row['image_path']
时,我会得到以下内容:
string(11) "image1.jpeg" string(11) "image2.jpeg" string(11) .....
我以前在数据库中保存了完整的图像路径,当使用完整的图像路径时,图像显示正确。后来我决定只将图像名称存储在数据库中,因为路径可能在将来发生变化,因此设计更改产生了这个问题。
答案 0 :(得分:3)
while($row = mysqli_fetch_array($result)) {
$path = '../images/thumbs/'.$row['image_path'];
//var_dump($path);
echo '<li><img src="../images/thumbs/'.$path.'"/></li>';
}
$ path已经包含“../ images/thumbs/”,但是在回显该行时再次添加它。
答案 1 :(得分:1)
你的回声上有两次路径。
您的代码应该是这样的:
while($row = mysqli_fetch_array($result)) {
$path = '../images/thumbs/'.$row['image_path'];
//var_dump($path);
echo '<li><img src="$path"/></li>';
}
如果不起作用,请尝试复制var_dump
结果并粘贴到浏览器中以检查路径是否正确。
答案 2 :(得分:1)
../images/thumbs/
正在回应两次。试试这个:
echo '<li><img src="'.$path.'"/></li>';