簡體   English   中英

將多個sql查詢合並為一個較小且更好的查詢

[英]multiple sql queries into one small and better query

我在我的php頁面中使用這些查詢,我認為有一種更好的方法可以做同樣的事情。

$cms1 = getRow("select * from cms where cmsID=1");
$cms2 = getRow("select * from cms where cmsID=2");
$cms3 = getRow("select * from cms where cmsID=3");
$cms4 = getRow("select * from cms where cmsID=4");
$cms5 = getRow("select * from cms where cmsID=5");

我正在從這些查詢中打印數據

<?=$cms['content']?> 
<?=$cms2['content']?>
<?=$cms3['content']?> ....

是否有更好的方法來執行此操作或在單個查詢中獲取所有這些數據? 我想我可以通過在查詢中使用AS鍵來獲得結果,但我不知道如何。

function getRow($query)
{
    $rs = mysql_query($query) or die(mysql_error());
    $result = array();

    if(mysql_num_rows($rs))
    {
        $row = mysql_fetch_assoc($rs);      
        return $row;
    }
}

使用mysql IN

select * from cms where cmsID in (1,2,3,4,5)

您可以使用IN子句替換許多OR條件

$sql = "select * from cms where cmsID in (1,2,3,4,5)";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
    echo $row['cmsID'].' '.$row['content'];//output like  :- 1 content
    }

這也可以通過使用

之間

在MySQL中

 SELECT * FROM cms WHERE cmsID BETWEEN 1 AND 5; 

有關between子句的更多信息,您可以訪問此鏈接

$arrData = array();
$result = mysql_query($query) or die(mysql_error());
while($row = $result->fetch_array()) {

    array_push($arrData,$row);
}

print_r($arrData);

首先改變你的功能

function getRow($query)
{

$rs = mysql_query($query) or die(mysql_error());
$result = array();
if(mysql_num_rows($rs))
 {

   while($row = mysql_fetch_assoc($rs))
   {
       $record[$row['cmsID']] = $row;
   }

 return $record;
 }
}  

然后更改您的查詢

$output = getRow(select * from cms where cmsID in (1,2,3,4,5));  

然后回顯您的輸出。

print_r($output);

for($ i = 1; $ i <= 5; $ i ++){$ cms1 = getRow(“從cms中選擇*,其中cmsID ='”。$ i。“'”);

}

暫無
暫無

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

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