首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中嵌套的While循环问题

问PHP中嵌套的While循环问题
EN

Stack Overflow用户
提问于 2014-07-01 10:34:57
回答 1查看 140关注 0票数 0

我有一个体育数据库,我有两个表,一个是事件表,一个是赔率表。我已经成功地从events表中获取了数据,我正在尝试获取从数据库中检索到的每个事件的赔率,但它需要永远加载,可能是因为我使用了多个while循环,请告诉我如何简化sql查询以减少加载时间。下面是我的代码

代码语言:javascript
复制
<?php
    include("admin/db.php");
    include("../mpdf.php");
     $mpdf = new mPDF('utf-8',    // mode - default ''
     'A4-L',    // format - A4, for example, default ''
     12,     // font size - default 0
     '',    // default font family
     2,    // margin_left
     2,    // margin right
     2,     // margin top
     2,    // margin bottom
     0,     // margin header
     0,     // margin footer
     'L');  // L - landscape, P - portrait 

    $html .="<h1 align='center'>ELSPORTBET</h1>";
    $html .="<table border=1 width='100%;' cellpadding=1>";

    $stmt = mysql_query("SELECT * FROM event ORDER BY league limit 100");

    $current_cat = null;
    while ($row =mysql_fetch_array($stmt)) {
      if ($row["league"] != $current_cat) {
        $current_cat = $row["league"];
        $html.="<tr><th colspan='3' align='center'>$current_cat</th></tr>";
      }
      $html.="<tr><td colspan='3' align='center'>$row[eventid]</td>";

     /* planning to call a while loop here , takes forever to load
     $sql4=mysql_query("select price from odds where eventid='$row[eventid]'");
      while($odds=mysql_fetch_array($sql4)){
        $html.="<tr><td colspan='3' align='center'>$odds[price]</td></tr>";  output all the odds
      } */

    }
    $html .="</table>";

    $mpdf->SetDisplayMode('fullpage');
    $stylesheet = file_get_contents('table_style.css');
    $mpdf->WriteHTML($stylesheet,1);    
    $mpdf->WriteHTML($html);
    $mpdf->Output("pdf.pdf", "I");
    exit;

?>
EN

回答 1

Stack Overflow用户

发布于 2014-07-01 10:47:03

这里的问题是,您要为每个查询调用DB。为什么不这样做呢( ",“是一个内部连接):

代码语言:javascript
复制
$stmt = mysql_query("SELECT e.league, o.price FROM event e, odds o WHERE e.eventid = o.eventid ORDER BY e.league limit 100");

$current_cat = null;
$current_id = null;
while ($row = mysql_fetch_array($stmt)) {
  if ($row["league"] != $current_cat) {
    $current_cat = $row["league"];
    $html .= "<tr><th colspan='2' align='center'>$current_cat</th></tr>";
    $html .= "<tr><td align='center'>$row[eventid]</td>";
    $html .= "<td align='center'>$row[price]</td></tr>"; 
  }
  else
  {
    if($row["eventid"] != $current_id)
    {
       $current_id = $row["eventid"];
       $html .= "</tr><tr><td align='center'>$current_id</td>";
       $html .= "<td align='center'>$row[price]</td>";
    }
    else
    {
    $html .= "<td align='center'>$row[price]</td>"; 
    }
  }
}
$html .="</tr>";

好的,这应该是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24501696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档