关于dedecms中的嵌套循环查询

dedecms 同时被 3 个专栏收录
0 篇文章 0 订阅
1 篇文章 0 订阅
1 篇文章 0 订阅

刚才遇到一个问题,在dedecms中,普遍的查询语句是

$db->SetQuery($dsql);  //$dsql 为sql语句
$db->Execute();
while($arr = $db->GetArray())
{
}

因业务需要,我需要把 城市=>地区 的二级级联,从数据库中读取出来,并生成一个json文件。

So,一开始使用的是

//错误写法!!!!
$db->SetQuery($dsql);  //$dsql 为sql语句
$db->Execute();
while($arr = $db->GetArray())
{

    $db->SetQuery($dsql2);  //$dsql2 为sql2语句
    $db->Execute();
    while($arr2 = $db->GetArray())
    {
            }

}

循环内的$dsql2只执行了一次,然后去官网看了一下数据库API

API中说明,为了区分不同的查询,给出了如下例子(其实还是不行)、

$db->Execute('me',$dsql);
while($arr = $db->GetArray())
{
   $db->Execute('2',$dsql2);
   while($arr2 = $db->GetArray())
   {
      
   }
}

最后,正确的写法是:

$db->Execute('one',$dsql); 
while($arr = $db->GetArray('one'))
{
   $db->Execute('two',$dsql2);
   while($arr2 = $db->GetArray('two'))
   {
      
   }
}

//one 和 two 就是两个游标标记,但要注意,在getArray()里也要添加这个参数!

 

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

dobtink

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值