[英]Multiple Queries In One PHP Page
我需要执行多个查询才能在PHP(7.0.9)网页上形成多个图形。 当页面运行时,我能够执行一次sqlsrv_query()
。 当我尝试第二次执行它时,我收到此PHP错误:
[2016年12月13日13:17:26 America / New_York] PHP致命错误:第249行的C:\\ File \\ File \\ piechart.php超过了300秒的最大执行时间
第249行是print_r(array_values($dataa));
目前,这只是测试变量输出方式的测试。 这是完整的代码。
<?php
$connectionInfo = array( "UID" => "form", "PWD" => "-------", "Database" => "-------");
$serverName = "--------";
$conn = sqlsrv_connect($serverName, $connectionInfo);
$test = 0;
ob_start();
if ($conn === false) die("<pre>".print_r(sqlsrv_errors(), true));
echo "Successfully connected!";
ob_end_clean();
$sql = "SELECT Defect, COUNT(*) AS Amount FROM dbo.InputData Where Defect IS NOT NULL GROUP BY Defect ";
$sql2 = "SELECT Comments, COUNT(*) AS Amount FROM dbo.InputData WHERE Comments LIKE '%wav%' OR Comments LIKE '%way%' GROUP BY Comments";
$stmt = sqlsrv_query( $conn, $sql);
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
echo "code: ".$error[ 'code']."<br />";
echo "message: ".$error[ 'message']."<br />";
}
}
?>
<!DOCTYPE html>
<!-- Bunch of HTML code here... -->
<table width="100%">
<tr>
<td>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Defect', 'Ammount'],
<?php while($data = sqlsrv_fetch_array($stmt)) {
echo "['" . $data[0]. "', " . $data[1] . "],
";
} ?>
]);
var options = {
title: 'Glass Defects',
is3D: true,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
<div id="piechart" style="width: 900px; height: 500px;"></div>
</td>
<td>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Defect', 'Ammount'],
<?php
while($dataa = sqlsrv_fetch_array(sqlsrv_query( $conn, $sql2))) {
print_r(array_values($dataa)); //Line 249
}
?>
]);
var options = {
title: 'Glass Defects',
is3D: true,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</td>
</tr>
</table>
<!-- Bunch more HTML... -->
</html>
每次启动while
循环时,您都会再次运行查询。 结果,它运行了无数次,导致脚本超时(如错误所示)。 代替这个:
while($dataa = sqlsrv_fetch_array(sqlsrv_query( $conn, $sql2))) {
print_r(array_values($dataa)); //Line 249
}
做这个:
$result = sqlsrv_query( $conn, $sql2);
while($dataa = sqlsrv_fetch_array($result)) {
print_r(array_values($dataa)); //Line 249
}
另外,您实际上可能希望将代码的各个部分分开。 混合HTML,PHP和JavaScript是维护噩梦的秘诀,并且几乎不可能正确测试应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.