仅为第一个数据库调用返回数据

时间:2016-04-22 03:13:06

标签: php html

我使用相同的查询填充4个选择,但只填充第一个选择而后续选择不填充。事实上,一旦到达第二个选择page_load()就停止了。

的问题:
1)导致page_load停止的原因是什么?

2)有没有办法重新使用代码,这样我就不必进行多次DB调用来返回相同的数据?

这是我的语法:

<div id="OrderInfo" runat="server">
<table id="orderinginfo">
<tr>
<td>
    <label for="labelselect">Choose an Item</label>
    <select>
        <option value="null" selected="selected"></option>
        <?php 
            include 'phpquery.php';
            $sql = "Select item from items";
            echo get_items($sql); 
        ?>
    </select>                   
</td>
</tr>
<tr>
<td>
    <label for="labelselect1">Choose an Item:</label>
    <select>
        <option value="null" selected="selected"></option>
        <?php 
            include 'phpquery.php';
            $sql = "Select item from items";
            echo get_items($sql); 
        ?>
    </select>                   
</td>
</tr>
</table>
</div>

<?php
function get_items($sql) {
  $servername = "localhost";
  $username = "user";
  $password = "pass";
  $dbname = "database";
  $conn = new mysqli($servername, $username, $password, $dbname);
  if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }  
  $result = $conn->query($sql);
  if ($result->num_rows > 0) 
  {
    while($row = $result->fetch_assoc()) { echo "<option value=".$row['item'].">".$row['item']."</option><br>"; }
  } 
  else echo "<option value='null'>default</option>";
  $conn->close();
}
?>

1 个答案:

答案 0 :(得分:0)

您正在phpquery.php重新定义任何功能或类。当您尝试重新定义此类函数或类时,PHP将中止。考虑将该文件phpquery.php包括一次,然后运行您的函数get_items。您可以使用include_oncerequire_once

当您可能需要多次包含被调用文件时,可以使用

require_once()include_once()语句将php文件包含在另一个中。如果发现文件已被包含,则调用脚本将忽略进一步的包含。