gpt4 book ai didi

php - MYSQL查询语句替换PHP循环

转载 作者:行者123 更新时间:2023-11-29 09:07:34 25 4
gpt4 key购买 nike

假设我有下表:

  • 项目(project_id、project_name)
  • 文档(文档 ID,文档名称,project_id)

这是一种自上而下的层次结构,我使用 select 语句和循环来生成嵌套数组,例如:

$result_array = array();
$projects = mysql_query(' SELECT * FROM projets') ;
$i = 0 ;
while( $row_proj = mysql_fetch_assoc($projects) )
{
$result_array[$i] = $row_proj ;
$documents = mysql_query('SELECT * FROM documents WHERE project_id='.$row['project_id']);
$doc_res = array();
while( $row_doc = mysql_fetch_assoc($documents)
{
$doc_res[] = $row_doc;
}
$result_array[$i]['documents'] = $row_doc ;
$i++;
}
.. and so on

结果是嵌套数组,因此在 View 中我可以像这样打印它:

foreach( $projects as $project )
{
echo $project['project_name'];
foreach( $project['documents'] as $document )
{
echo ..
}
}

我如何使用 SQL 语句或任何其他东西使用简单的平面循环来生成这个,这种方式似乎不是最好的方式,有时我使用 join 但它不会生成诸如嵌套数组之类的东西。

最佳答案

如果我明白你想要实现的目标,我会这样做:

SELECT * FROM documents 
INNER JOIN projects ON projects.id = documents.project_id

然后使用 PHP 迭代所有文档,将它们按 project_id 分组到数组中。您将再次有一个查询。可以执行 MySQL 循环,但宁愿做一件丑陋的事情,对于上面的示例,它不会给你带来任何优势。

关于php - MYSQL查询语句替换PHP循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com