1

我有两张桌子...

项目表

+----+--------+
| 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";

谢谢你们...

4

4 回答 4

1

你必须像下面那样打破字符串

$imgArray = explode(',',$row['imagePath']);
//then do 
foreach($imgArray as $im)
{
 if( is_readable($im) ) {
         echo "<img src='$im' title='Image' />";
 }
}
于 2012-09-18T06:13:39.150 回答
1

我相信EXPLODE就是答案。看看PHP explode - running loop through each array item Stack overflow question。我相信它会回答你的问题。

另外,我认为(另一种方法)如果您将您的查询更改为

SELECT tp.CLIENT,ti.IMAGEPATH
FROM tblProject tp 
JOIN tblImage ti ON tp.Id = ti.ProjectId

那么一个简单的循环将很容易让你通过。

于 2012-09-18T06:14:06.983 回答
1

您可以尝试使用foreach循环不同的值。

句法:

foreach (array_expression as $value)
    statement

首先将您获得的所有值插入到这样的数组中:

$imgArray = explode(',',$row['imagePath']);

然后循环遍历这个数组:

foreach ($imgArray as $img)
{
 echo "<img src='$img'" />";
}
于 2012-09-18T06:14:41.947 回答
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";

并遍历结果。

于 2012-09-18T06:13:51.260 回答