php - 将两个查询优化为一个并将结果分开

标签 php mysql

如何优化这段代码?是否可以成为一个查询?

此代码将我的广告信息提供到我的网站中。同时将我的按摩放入数据库然后调用它们是否正确?

$result1 = mysql_query( "SELECT * FROM msg WHERE type='container'" , $link);

    while($end = mysql_fetch_assoc($result1)) {
        $msg=$end['msg'];
        $msg_class=$end['msg_class'];

 $msg_container[]='<div class="'.$msg_class.'">'.$msg.'</div>';
    }


$result2 = mysql_query( "SELECT * FROM msg WHERE type='leftbar'" , $link);

    while($end = mysql_fetch_assoc($result2)) {
        $msg=$end['msg'];
        $title=$end['title'];
        $msg_class=$end['msg_class'];

 $msg_leftbar[]='<div class="'.$msg_class.'"><h2>'.$title.'</h2><hr />'.$msg.'</div>';
    }

编辑: 如果一个查询有 ORDER BY RAND() LIMIT 1 ,像这样:

$result1 = mysql_query( "SELECT * FROM msg WHERE type='container' ORDER BY RAND() LIMIT 1" , $link);

其他还没有:

$result2 = mysql_query( "SELECT * FROM msg WHERE type='leftbar'" , $link);

现在我可以混合它们吗?

最佳答案

是的,你可以试试这个

$result = mysql_query( "SELECT msg, title, msg_class, type FROM msg WHERE type in ('container', 'leftbar' )" , $link);

while($end = mysql_fetch_assoc($result)) {

     $msg       =   $end['msg'];
     $msg_class =   $end['msg_class'];
     $title     =   $end['title'];

    if ($end['type'] == 'container') {
        $msg_container[]='<div class="'.$msg_class.'">'.$msg.'</div>';
    }

    if ($end['type'] == 'leftbar') {
        $msg_leftbar[]='<div class="'.$msg_class.'"><h2>'.$title.'</h2><hr />'.$msg.'</div>';
    }

}

关于php - 将两个查询优化为一个并将结果分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750234/

相关文章:

mysql 当我加入同一个表两次聚合是错误的

php - 无法将文件上传到主存储桶的子文件夹

php - Symfony:获取两个表的结果

php - 在类中使用 PHP time() 函数

MySQL 在 where 子句中使用内部查询

php - 获取相同日期的两个表的记录

php - 加密是否可以防止 sql 注入(inject)?

javascript - 将 PHP 变量传递到 Jquery 弹出窗口

php - 使用php在目录中查找文件

mysql - Laravel 和 MySQL 之间的实时性