我需要在“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请求时产生冲突。 感谢
答案 0 :(得分: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;
}
}
答案 1 :(得分: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)或者您可以使用IN
$result = $apt->query("SELECT * cat where main IN ('0','1')");
while($row=$apt->dbarray($result)){
$array['main0'][] = $row[];
}