我最近一直在使用PHP,但不太了解。
现在我正试图从一行获取所有信息。这就是我到目前为止所做的:
$server = mysql_query("SELECT * FROM servers;");
$serverFinal = mysql_fetch_row($server);
这是有效的,但每当我在表中有超过1行时,它就会一直给我第一行。 这是完整的代码:
<?php
include "C:/wamp/www/minebook/mysql/info.php";
$db_database = 'minebook_servers';
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_database);
$result = mysql_fetch_array(mysql_query("SELECT COUNT(*) as count FROM servers"));
$f = 1;
while ($f <= $result['count']) {
$server = mysql_query("SELECT * FROM servers;");
$serverFinal = mysql_fetch_row($server);
$response = $status->getStatus("$serverFinal[1]", $serverFinal[2]);
if(!$response) {
echo '
<tbody>
<tr>
<td class="mname">'.$serverFinal[0].'</td>
<td class="mserver">OFFLINE</td>
<td class="mstatus">OFFLINE</td>
</tr>
</tbody>
';
} else {
echo '
<tbody>
<tr>
<td class="mname">
'.$serverFinal[0].' '.$serverFinal[1].' '.$serverFinal[2].'
</td>
<td class="mserver">
<img class="theadImage" border="0" src="/minebook/pictures/d_helmet.png" alt="Name" width="22" height="18">
'.$response['players'].'/'.$response['maxplayers'].'
<img class="theadImage" border="0" src="/minebook/pictures/grass.png" alt="Name" width="18" height="18">
'.$response['version'].'
</td>
<td class="mstatus">
ONLINE
</td>
</tr>
</tbody>
';
}
$f++;
}
?>
我知道我应该使用mysqli。我很快就把它换了。
答案 0 :(得分:0)
看起来你没有在你的内部SQL语句中循环。
while (($serverFinal = mysql_fetch_row($server)) !== FALSE) {
// do everything here
}
答案 1 :(得分:0)
我猜你对数据库操作有点困惑。请遵循以下步骤:
查询数据库并获取所有结果。 (不要在循环内查询)
$server = mysql_query("SELECT * FROM servers");
现在遍历您的结果并获取它们。
while( $row = mysql_fetch_assoc($server) ){
//the $row will contain all the data related to this row
}
所以,你需要做这样的事情:
$server = mysql_query("SELECT * FROM servers"); //query outside the loop
while( $row = mysql_fetch_assoc($server) ){ //fetch in a loop
//the $row will contain all the data related to this row
$response = $status->getStatus("$row['field_name']", $row['field_name']);
if(!$response) {
//continue your work
}
}
作为旁注,MySQL_*
扩展名已弃用,不再维护。使用PDO
或MySQLi_*
insetad。