我有两张桌子......
**项目表
id client
1 James
2 John
**图片表
id projectId imagePath
1 1 images/image1.jpg
2 1 images/image2.jpg
3 2 images/image3.jpg
4 2 images/image4.jpg
5 2 images/image5.jpg
如您所见,一个项目有很多图像。我想要显示它 这样......
James
images/img1.jpg
images/img2.jpg
John
images/img3.jpg
images/img4.jpg
images/img5.jpg
这篇文章给了我想要的东西https://stackoverflow.com/a/2451065/1214535
但是当我这样回声时
<img src='".$row['imagePath']."/>
图片标记中的结果我得到了这个
<img src="images/img3.jpg,images/img4.jpg,images/img5.jpg">
而不是
<img src="images/img3.jpg"/>
<img src="images/img4.jpg"/>
<img src="images/img5.jpg"/>
如何更改查询以便我可以正确/单独显示图像
这是我正在使用的查询
$sql="SELECT images.projectId,project.client,
GROUP_CONCAT(images.imagePath SEPARATOR ', ')
AS 'imagePath'
from project left JOIN images on project.id=images.projectId
GROUP BY project.id ASC";
谢谢你们......
答案 0 :(得分:1)
你必须打破下面的字符串
$imgArray = explode(',',$row['imagePath']);
//then do
foreach($imgArray as $im)
{
if( is_readable($im) ) {
echo "<img src='$im' title='Image' />";
}
}
答案 1 :(得分:1)
我相信EXPLODE就是答案。看看PHP explode - running loop through each array item堆栈溢出问题。我相信它会回答你的问题。
此外,如果您将查询更改为
,我认为(另一种方法)SELECT tp.CLIENT,ti.IMAGEPATH
FROM tblProject tp
JOIN tblImage ti ON tp.Id = ti.ProjectId
然后一个简单的循环将很容易让你通过。
答案 2 :(得分:1)
您可以尝试使用foreach
循环显示不同的值。
语法:
foreach (array_expression as $value)
statement
首先在数组中插入您获得的所有值,如下所示:
$imgArray = explode(',',$row['imagePath']);
然后循环遍历此数组:
foreach ($imgArray as $img)
{
echo "<img src='$img'" />";
}
答案 3 :(得分:0)
因为您使用的是GROUP_CONCAT,它将所有非空值作为字符串返回。
您可以使用以下查询:
$sql="SELECT images.projectId,project.client,images.imagePath SEPARATOR
AS 'imagePath'
from project left JOIN images on project.id=images.projectId
GROUP BY project.id ASC";
循环结果。