0

我需要在“main = 1”一次时从数据库中全选,然后在“main = 0”时从数据库中全选并在同一个请求中使用它们。我可以在一个请求中做到这一点吗?这是请求

1.

$result = $apt->query("SELECT * FROM cat where main='0'");

while($row=$apt->dbarray($result)){

@extract($row);

2.

$result = $apt->query("SELECT * FROM cat where main='1'");

while($row=$apt->dbarray($result)){

@extract($row);

我有点需要将它们组合在一个请求中,因为这会在执行 2 个请求时产生冲突。谢谢

4

2 回答 2

2

你有几个选择

SELECT * from cat where main = '0' or main ='1'; 

或者

SELECT * from cat where main in ('0','1');

如果您所说的冲突是指维护两个查询之间的并发性,那么这种方式并将整个操作包装在事务中是确保并发性的唯一方法。

这是一个示例,说明如何使用上面的查询来模拟您提供的代码,但在单个查询中进行。

  $result = $apt->query("SELECT * FROM cat where main='0' or main = '1' order by main");
  while($row=$apt->dbarray($result)){
        @extract($row);
        switch ($main){
            case 0:
                // do stuff for when main = 0
                break;
            case 1:
                // do stuff for when main = 1
                break;
        }
  }
于 2013-06-15T04:35:54.527 回答
1

1)创建1个数组并将结果插入该数组中。

$array = array();
$result = $apt->query("SELECT * cat where main='0'");

while($row=$apt->dbarray($result)){
    $array['main0'][]  = $row[];
}

$result = $apt->query("SELECT * cat where main='1'");

while($row=$apt->dbarray($result)){
    $array['main1'][]  = $row[];
}

echo json_encode($array);

2)或者你可以使用1个查询IN

$result = $apt->query("SELECT * cat where main IN ('0','1')");

while($row=$apt->dbarray($result)){
    $array['main0'][]  = $row[];
}
于 2013-06-15T04:37:32.277 回答