多个sql查询成一个小而好的查询

时间:2015-10-29 06:35:11

标签: php mysql sql

我在我的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;
    }
}

4 个答案:

答案 0 :(得分:0)

使用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
    }

答案 1 :(得分:0)

这也可以使用

来实现
  

BETWEEN

在mysql中

 SELECT * FROM cms WHERE cmsID BETWEEN 1 AND 5; 

有关Between子句的详细信息,请访问此Link

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

    array_push($arrData,$row);
}

print_r($arrData);

答案 2 :(得分:0)

首先改变你的功能

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);

答案 3 :(得分:0)

for($ i = 1; $ i&lt; = 5; $ i ++){ $ cms1 = getRow(“select * from cms where cmsID ='”。$ i。“'”);

}