我有一个体育数据库,我有两个表,一个是事件表,一个是赔率表。我已经成功地从events表中获取了数据,我正在尝试获取从数据库中检索到的每个事件的赔率,但它需要永远加载,可能是因为我使用了多个while循环,请告诉我如何简化sql查询以减少加载时间。下面是我的代码
<?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;
?>发布于 2014-07-01 10:47:03
这里的问题是,您要为每个查询调用DB。为什么不这样做呢( ",“是一个内部连接):
$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>";好的,这应该是可行的。
https://stackoverflow.com/questions/24501696
复制相似问题