Php CI框架MySQL查询

Php CI框架MySQL查询,php,mysql,codeigniter,Php,Mysql,Codeigniter,我是第一次使用CI框架,我需要一些帮助 我正在将一个现有的网站迁移到CI框架,并且一步一步地遵循CI的教程,没有太多麻烦,但是有一些障碍我似乎无法克服 我的数据库表有两列-“国家”和“城市”-我希望在视图文件中返回一个结果,该结果按国家对所有行进行分组,将该国家打印为标题,然后将所有相应的城市打印为相关国家下的列表 即 有谁能帮我举个例子,告诉我如何在CI mvc结构中处理这种类型的查询 目前,上述代码返回的结果为: <h1>England</h1> <ul>

我是第一次使用CI框架,我需要一些帮助

我正在将一个现有的网站迁移到CI框架,并且一步一步地遵循CI的教程,没有太多麻烦,但是有一些障碍我似乎无法克服

我的数据库表有两列-“国家”和“城市”-我希望在视图文件中返回一个结果,该结果按国家对所有行进行分组,将该国家打印为标题,然后将所有相应的城市打印为相关国家下的列表

有谁能帮我举个例子,告诉我如何在CI mvc结构中处理这种类型的查询

目前,上述代码返回的结果为:

<h1>England</h1>
<ul>
<li>Liverpool</li>
</ul>
<h1>England</h1>
<ul>
<li>London</li>
</ul>
<h1>England</h1>
<ul>
<li>Sheffield</li>
</ul>
英格兰
  • 利物浦
英格兰
  • 伦敦
英格兰
  • 谢菲尔德
谢谢

试试看

<?php 
$country =$query[0]->country;
$index=1;
if (isset($query)):?>
<?php foreach ($query as $row):?>

<?php if($country==$row->country){ 

if($index==1){ ?> 
<h1><?=$row->country?></h1>
  <?php }
  $index++;
 }else{  
  $country=$row->country; 
 $index++;
 ?>
 <h1><?=$row->country?></h1>
<?php } ?>

<ul>
<li><?=$row->city?></li>
</ul>
<?php endforeach;?>
<?php endif;?>


请添加
$this->Default_model->getResults()的数组转储数据
在您的问题中,您的意思是该查询返回的结果是什么@Dianuj我觉得您的逻辑/代码很好,如果您收到任何错误怎么办?而不是
return$query->result()尝试执行
var_转储($query->result());模具()
看看你是否真的得到了什么结果?@user2505513是的results@dianuj如上所述,后期编辑以包含当前查询结果。我曾考虑过使用$I变量循环,但这不会影响mvc结构,因为视图文件中有太多php@Dianuj首先,你的结果数组是错误的,你必须做一个数组,像一个国家应该有一个城市数组,然后其他国家有一个城市数组,像父数组,然后是子数组,我想我理解你的意思-但我想确定。。。你是说我的查询应该只返回国家,然后在循环中运行第二个查询,返回与当前国家相等的城市吗?我曾经被建议不要在查询循环中运行查询循环。。。这是正确的吗@dianujyes这就是我想说的,但是如果你不在循环中运行查询,那么你必须在phpIt中这样玩,这是行不通的。我无法在模型的第二个查询中定义国家。它只是产生一个关于未定义变量的错误。。。所以看起来我确实需要像这样玩弄php。我相信关键在于控制器和创建某种数组,以从模型中的查询返回所需的结果。有人有什么指导吗@迪亚努吉
<?php if (isset($query)):?>
<?php foreach ($query as $row):?>
<h1><?=$row->country?></h1>
<ul>
<li><?=$row->city?></li>
</ul>
<?php endforeach;?>
<?php endif;?>
function getResults()
{
    $query = $this->db->query('SELECT * FROM events GROUP BY country, city ORDER BY country, city');
    return $query->result();
}
<h1>England</h1>
<ul>
<li>Liverpool</li>
</ul>
<h1>England</h1>
<ul>
<li>London</li>
</ul>
<h1>England</h1>
<ul>
<li>Sheffield</li>
</ul>
<?php 
$country =$query[0]->country;
$index=1;
if (isset($query)):?>
<?php foreach ($query as $row):?>

<?php if($country==$row->country){ 

if($index==1){ ?> 
<h1><?=$row->country?></h1>
  <?php }
  $index++;
 }else{  
  $country=$row->country; 
 $index++;
 ?>
 <h1><?=$row->country?></h1>
<?php } ?>

<ul>
<li><?=$row->city?></li>
</ul>
<?php endforeach;?>
<?php endif;?>