簡單的解決方案
你需要從eventmember
表,該表必須對每一個事件的多個用戶得到多個userId
秒。但是你只從$row = mysql_fetch_array($resultset);
那個查詢中獲取一次,所以你應該只有一個用戶,你現在得到了什麼。因此,問題是,您實際上已將while
循環放置在錯誤的地方。環路應設置如下:
$sql="SELECT userId FROM eventmember WHERE eventid='$event_id';";
$resultset = mysql_query($sql);
$num_row = mysql_num_rows($resultset);
if($num_row) {
while($row = mysql_fetch_array($resultset)) {
$sql22 = "SELECT userId, firstName FROM userinfo WHERE userId='{$row['userId']}';";
$resultset22 = mysql_query($sql22);
$row22 = mysql_fetch_array($resultset22);
$us_id = $row22['userId'];
$us_name = $row22['firstName'];
echo "<tr>";
echo "<td>ID:</td> <td class='text2' align='center' colspan='2'>
<b> $us_id </b>
</u></td>";
echo "</tr>";
//You shouldn't use a break here. This will again give you single result only.
}
}
更好的解決方案
而不是使用多個查詢從userinfo
表中獲取數據,使用JOIN一個查詢來獲取所有數據。就像這樣:
$sql="SELECT u.userId,u.firstName FROM eventmember e JOIN userinfo u ON u.userId = e.userId WHERE e.eventid='$event_id';";
$resultset = mysql_query($sql);
$num_row = mysql_num_rows($resultset);
if($num_row) {
while($row = mysql_fetch_array($resultset)) {
$us_id = $row['userId'];
$us_name = $row['firstName'];
echo "<tr>";
echo "<td>ID:</td> <td class='text2' align='center' colspan='2'>
<b> $us_id </b>
</u></td>";
echo "</tr>";
}
}
最好的,最安全的解決方案
正如你應該已經知道mysql_*
函數在PHP 7被刪除,這個功能是爲了您的安全非常有害的。所以,你應該移動到PDO或mysqli_*函數。我在這裏給出了一個mysqli_*
函數的例子,另外我一次性讀取所有行,而不是對每行進行讀取,這對性能更好。
//First setup your connection by this way.
$link = mysqli_connect(localhost, "my_user", "my_password", "my_db");
//Now you can use mysqli
$sql="SELECT u.userId,u.firstName FROM eventmember e JOIN userinfo u ON u.userId = e.userId WHERE e.eventid=?;";
$stmt = mysqli_prepare($link, $sql);
$stmt->bind_param('s', $event_id);
$stmt->execute();
$resultset = $stmt->get_result();
$resultArray = $resultset->fetch_all();
$num_row = count($resultArray);
if($num_row) {
foreach($resultArray as $row) {
$us_id = $row['userId'];
$us_name = $row['firstName'];
echo "<tr>";
echo "<td>ID:</td> <td class='text2' align='center' colspan='2'>
<b> $us_id </b>
</u></td>";
echo "</tr>";
}
}
把它放進一個while循環:'而($行= mysql_fetch_array($結果集)){/ *代碼* /}' – Rizier123
[**請不要在新的使用'mysql_ *'功能代碼**](http://stackoverflow.com/q/12859942)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://uk.php.net/manual/en/function.mysql-connect.php)?學習[*準備的語句*](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli)。 – Rizier123
一個foreach循環也應該工作'foreach($ row as $ value){}' – danidee