刚才遇到一个问题,在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()里也要添加这个参数!