我有一个用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;
}
然而,虽然这两个函数都可以单独运行,但当它们都在同一个网页上时(就像我的意思),只有第一个运行的函数才会运行。我通过切换它们来测试它。他们都完成了他们的指定任务,但只有在页面上独自完成时。 如何让它们运行并填充各自的字段?
非常感谢。
答案 0 :(得分:1)
请尝试以下顺序:
连接到mySQL服务器
执行任务1
执行任务2
关闭连接
对我而言,在执行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方法(每个方法使用它自己的相关资源)。
说,我认为现在是时候了: