簡體   English   中英

PHP-MySql從具有多個條件的表中選擇

[英]php - MySql select from table with multiple conditions

我需要在“ 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個請求時會產生沖突。 謝謝

您有幾種選擇

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個數組並將結果插入該數組中。

$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使用1個查詢

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM