繁体   English   中英

一个PHP页面中的多个查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM