我有两张桌子:文章和图片。 每篇文章都有5个链接图像。 我需要选择所有文章和所有图像,在一个查询中按文章ID分组。
获取文章的简单查询:
SELECT * FROM articles WHERE Del=0 AND Tip=10
获取该文章的所有图像
SELECT * FROM images WHERE UID=articles.UID AND Tiket=articles.P_Num AND Del=0
通过User_ID(UID)和User_Post_Number(P_Num)与图像链接的文章 P_Num - 不是唯一的!这不是文章ID。 UID + P_Num =唯一。
我需要得到的内容 - 每篇文章的字段=图像数组的文章数组。
通过
显示带有图片的文章foreach(Articles)
{
show_article_content;
for(article[images_count])
{
show_image;
}
}
答案 0 :(得分:1)
//QUERY
$q = "SELECT * FROM Articles JOIN Images on Articles.article_id = Images.articles_article_id";
$result = mysql_query($sql);
$article_id = 0;//article id being proccessed
while ($row = mysql_fetch_assoc($result))
{
/*
* example: article with id 1 --> 5 images
* article with id 2 --> 5 images
* this code prints the article once with its first image
* then on each loop prints only the image till its 4th image
* then reassigns the $article_id to the new article id.
*/
if($article_id != $row['article_id'])//if its the first time to print the article
{
$article_id = $row['article_id'];
/*
* SHOW OTHER STUFF RELATED TO THE ARTICLE
*/
echo $row['image'];//show the first image related to this article here
}
else
{
echo $row['image'];//show other 4 images here
}
}
答案 1 :(得分:0)
我建议这样的事情:
SELECT * FROM articles
JOIN images on articles.ID = images.articleId
ORDER BY articles.ID;
然后使用foreach或while循环来构建数组。
例如:
foreach ($dbData as $row){
$output[$row.ID][] = $row['image'];
}
您没有提供您的代码,因此这只是一个建议。
答案 2 :(得分:0)
太晚了,但我喜欢和你一起使用PDO分享这个,因为我已经在PHP5.5中测试了:
//
$database = "mydatabase";
$host = "localhost";
$user = "my-mysql-username";
$pass = "mypassword";
//
// PDO
//
try
{
$pdo = new PDO("mysql:host=$host;dbname=$database", $user, $pass);
}
catch (PDOException $e)
{
echo $e->getMessage();
exit;
}
//
$strSQL = "SELECT articles.UID,articles.title,articles.content,images.imageurl
FROM articles
INNER JOIN images ON articles.UID=images.UID AND images.Tiket=articles.P_Num
WHERE articles.Del=0 AND articles.Tip=10
ORDER BY articles.UID,images.UID;";
//
$rst = $pdo->prepare($strSQL);
$rst->execute();
//
// initialize previous ID:
// $i: counter
// $id0: previous ID
// $id: current ID
//
$id0 = -1;
//
while($row = $rst->fetch())
{
$id = $row["UID"];
//
// print once the article content or title:
//
if($id != $id0)
{
//
// close open the previous div if existent:
//
if($id0 != -1)
{
echo "</div>";
}
//
// open new div:
//
echo "<div>" . $row["content"];
$id0 = $id;
}
//
// show all images linked to the article:
//
echo "<img src=\"" . $row["imageurl"] . "\" />";
//
}
//
// close last open div:
//
if($id0 != -1)
{
echo "</div>";
}
//
$rst->closeCursor();
希望这有帮助。