【问题标题】:Combining output from 2 mysql results结合2个mysql结果的输出
【发布时间】:2012-12-15 22:42:04
【问题描述】:

我对 PHP 很陌生(曾经做过 .NET 的事情),我在一些数组方面遇到了一些麻烦。

我想要实现的是合并到从我的 Mysql 检索到的数组列表。

现在我首先遍历我的 mysql 结果并将所有这些 Idś 复制到数组中,然后我创建一个嵌套的 foreach 来组合所有这些。

我想知道是否有捷径/更智能的方法可以做到这一点?

看起来像这样

 $queryBodytext = mysql_query("SELECT * FROM BodyTexts WHERE CampaignId = " . $campaign_id );

 $queryImages = mysql_query("SELECT * FROM Images WHERE CampaignId = " . $campaign_id );

 $bodytext_ids = array();
 while($row = mysql_fetch_assoc($queryBodytext))
 {
    $bodytext_ids[] = $row['Id'];      
 }

 $image_ids = array();
 while($row = mysql_fetch_assoc($queryImages))
 {
    $image_ids[] = $row['Id'];       
 }

 foreach ($image_ids as $imgId) {
     foreach ($bodytext_ids as $bodyId) {
         echo 'Body id: ' . $bodyId . '. ImageId: '. $imgId . '<br />';
     }
 }

【问题讨论】:

  • 所以如果你有 5 个正文和 4 个图像,你想打印 4 x 5 = 20 行?

标签: php mysql arrays


【解决方案1】:

为什么不在查询本身中组合它们?

SELECT b.Id AS BodyTextId, i.Id AS ImageId
FROM BodyTexts b
INNER JOIN Images i ON b.CampaignId = i.CampaignId
WHERE CampaignId = {$campaignid}

【讨论】:

    【解决方案2】:

    您能否在 SQL 中进行连接,以便结果以单个列表的形式返回?然后调整你的循环以支持它。 SQL 将是:

    $query = mysql_query("SELECT BodyTexts.Id As BodyTextsId, Images.Id as ImagesId FROM BodyTexts JOIN Images on BodyTexts.CampaignId = Images.CampaignId WHERE CampaignId = " . $campaign_id );

    【讨论】:

      【解决方案3】:

      为什么不使用 UNION?

      这是一个例子:UNION example

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多