在PHP / HTML网页中执行多个MySQL查询:仅运行第一个查询

时间:2012-04-06 23:28:23

标签: php mysql html

我有一个用HTML编写的网页。我有一个下拉列表,由使用MySQL查询的数据库填充:

<SELECT NAME = "Participant" STYLE = "WIDTH: 187" TITLE="Begin typing participant last name for fast searching." required>
<OPTION SELECTED VALUE = "">Select Participant...</OPTION>
<?PHP
    $allParticipants = getall_participants();
    foreach($allParticipants as &$value) {
        $dt = date('Y-m-d'); 
        $val = $value->get_id();
        $optval = $dt.$val;
        echo "<OPTION VALUE='",$optval,"'>";
        echo $value->get_first_name()," ",$value->get_last_name();
        echo "</OPTION>";
    }
?>
</SELECT>

getall_participants()看起来像:

function getall_participants () {
connect();
$query = "SELECT * FROM dbParticipants ORDER BY last_name";
$result = mysql_query ($query);
$theParticipant = array();
while ($result_row = mysql_fetch_assoc($result)) {
    $theParticipant = new Participant($result_row['last_name'], 
                      $result_row['first_name'], $result_row['address']);
    $theParticipants[] = $theParticipant;
}
mysql_close();
return $theParticipants;
}

在同一页面上,我有一个由另一个数据库预先填写的文本框:

<?php
    $dt = date('Y-m-d'); 
    $participants = getall_dbParticipantEntry_byDate($dt);
    foreach($participants as &$value) {
        $a = $a.$value.", ";
    }
    echo "<INPUT TYPE='text' NAME='Participants' STYLE='WIDTH:50px;' TITLE='Participants' ";
    echo "VALUE='[", $a.' ', "]'/>";
?>

getall_dbParticipantEntry_byDate($ date)如下:

function getall_dbParticipantEntry_byDate($date) {
connect();
$query = 'SELECT * FROM dbParticipantEntry WHERE date = "'.$date.'"';
$result = mysql_query ($query);
$theParticipantEntry = array();
while ($result_row = mysql_fetch_assoc($result)) {
    $theParticipantEntry = new ParticipantEntry($result_row['date'], $result_row['id'], $result_row['call_time'],
    $result_row['result'], $result_row['notes']);
    $theParticipantEntries[] = $theParticipantEntry->get_id();
}
mysql_close();
return $theParticipantEntries;
}

然而,虽然这两个函数都可以单独运行,但当它们都在同一个网页上时(就像我的意思),只有第一个运行的函数才会运行。我通过切换它们来测试它。他们都完成了他们的指定任务,但只有在页面上独自完成时。 如何让它们运行并填充各自的字段?

非常感谢。

2 个答案:

答案 0 :(得分:1)

请尝试以下顺序:

  1. 连接到mySQL服务器

  2. 执行任务1

  3. 执行任务2

  4. 关闭连接

  5. 对我而言,在执行task2之前,它看起来就像你关闭了mysqlconnection一样。

    编辑:

    也许你可以这样做?

    function f1 ()
    {
        $res = mysql_connect(...);
    
        // .. do some queries ..
        mysql_query($sql, $res); 
    
        mysql_close($res ) 
    }
    
    function f2 ()
    {
        $res = mysql_connect(...);
    
        // .. do some queries ..
        mysql_query($sql, $res); 
    
        mysql_close($res ) 
    }
    

    编辑:

    来自php.net:

    使用多个链接连接到同一个数据库(使用相同的用户名)时要小心。除非您在mysql_connect()中明确指定创建新链接,否则它将返回已打开的链接。如果它将被mysql_close()关闭,它也会(显然)关闭另一个连接,因为链接是相同的。 很难搞清楚,因为在&lt; = 4.3.6中有一个没有关闭连接的错误,但是在&gt; = 4.3.7的补丁之后,我的所有应用程序因单个脚本而崩溃这样做了。

答案 1 :(得分:0)

您在同一个连接上运行它们。您需要存储从mysql_connect返回的资源ID,并将其传递给每个mysql方法(每个方法使用它自己的相关资源)。

说,我认为现在是时候了:

  1. 转向更现代的东西,如Mysqli或PDO扩展。更好的API
  2. 对连接管理使用某种抽象,最好是每个连接一个DB管理类的一个实例。 Web上有大量示例,提供此类说明超出了本网站的范围。