PHP选择特定行

时间:2013-10-27 04:13:42

标签: php mysql

我最近一直在使用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。我很快就把它换了。

2 个答案:

答案 0 :(得分:0)

看起来你没有在你的内部SQL语句中循环。

 while (($serverFinal = mysql_fetch_row($server)) !== FALSE) {
     // do everything here
 }

答案 1 :(得分:0)

我猜你对数据库操作有点困惑。请遵循以下步骤:

  1. 查询数据库并获取所有结果。 (不要在循环内查询)

    $server = mysql_query("SELECT * FROM servers");

  2. 现在遍历您的结果并获取它们。

    while( $row = mysql_fetch_assoc($server) ){ //the $row will contain all the data related to this row }

  3. 所以,你需要做这样的事情:

    $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_*扩展名已弃用,不再维护。使用PDOMySQLi_* insetad。