我可以只用一个写两个foreach吗?

时间:2016-09-08 14:43:08

标签: php mysql

在我的代码中我有这个:

$im  = $database->query("SELECT * FROM cms_messaggi_importanti WHERE messo_da = :id ORDER BY ID DESC", array("id"=>$functions->Utente("id")));
foreach($im as $imp){
    $mex_i  = $database->query("SELECT * FROM cms_messaggi WHERE id = :id ORDER BY ID DESC", array("id"=>$imp['id_mex']));
     foreach($mex_i as $mex_imp){ 
     }
}

我可以只用一个编写这个代码吗?因为我必须使用这种方法的很多变量。我的问题有解决方案吗?例如,使用“JOIN”?

1 个答案:

答案 0 :(得分:0)

您可以(并且应该)一次性执行查询,然后迭代这些结果:

$im  = $database->query("
    SELECT    * 
    FROM      cms_messaggi_importanti mi
    LEFT JOIN cms_messaggi m ON m.id = mi.id_mex
    WHERE     messo_da = :id 
    ORDER BY  mi.ID DESC, 
              m.ID DESC", 
        array("id"=>$functions->Utente("id")));

foreach($im as $imp){
    //...
}

您可能需要将SELECT *替换为更精确的列列表,该列表将是结果集中可用的列。