关于dedecms中的嵌套循环查询

1 篇文章 0 订阅
0 篇文章 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()里也要添加这个参数!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dobtink

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值