【问题标题】:multiple sql queries into one small and better query多个 sql 查询合并为一个小而更好的查询
【发布时间】:2015-10-29 06:35:10
【问题描述】:

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

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    这也可以通过使用

    来实现

    之间

    在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】:

      首先改变你的功能

      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】:

        使用mysqlIN

        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
            }
        

        【讨论】:

        • 然后怎么打印数据??
        • 选择不同cmsID时好友内容不同
        【解决方案4】:

        for($i=1;$i

        }

        【讨论】:

        • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
        猜你喜欢
        • 2016-02-05
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        相关资源
        最近更新 更多