Php while($row=mysql\u fetch\u row($result))

Php while($row=mysql\u fetch\u row($result)),php,mysql,Php,Mysql,我正在尝试使用php从mysql数据库中提取所有记录,并将其格式化显示。由于某些原因,第一条记录显示正确,但直接显示在其下方的第二条记录不显示字段名。我做错了什么 <?php $db_host = 'localhost'; $db_user = 'root'; $db_pwd = '***'; $database = 'db'; $table = 'upstable'; if (!mysql_c

我正在尝试使用php从mysql数据库中提取所有记录,并将其格式化显示。由于某些原因,第一条记录显示正确,但直接显示在其下方的第二条记录不显示字段名。我做错了什么

<?php
        $db_host = 'localhost';
        $db_user = 'root';
        $db_pwd = '***';
        $database = 'db';
        $table = 'upstable';
        if (!mysql_connect($db_host, $db_user, $db_pwd))
            die("Can't connect to database");

        if (!mysql_select_db($database))
            die("Can't select database");
        $result = mysql_query("SELECT * FROM {$table}");                              // sending query

        if (!$result) {
            die("Query to show fields from table failed");
        } 
        $fields_num = mysql_num_fields($result);
        while($row = mysql_fetch_row($result))                                        // printing table rows
        {
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[0]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[1]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[2]v</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[3]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[4]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[5]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[6]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[7]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</div></b><div id='column2'>$row[8]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[9]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[10]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[11]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[12]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[13]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[14]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[15]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[16]</div><br>";
            $field = mysql_fetch_field($result);
            echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[17]</div><br><br><br>";
            $row = 0;
        }
        mysql_free_result($result);
        ?>

您只获取第一行(因为$results的默认位置是[0],这是第一行)

显然,您不了解使用php获取排序和显示数据所涉及的过程,但下面是一个使用
mysqli
的准备语句和普通查询的示例

mysqli查询

function getmarkets()
{
    global $mysqli;
    $query = $mysqli->query("SELECT pair, last_price FROM all_currency_data");
    $num_rows = $query->num_rows;
    if($num_rows > 0) {
        while($row = $query->fetch_assoc())
        {
            $mkt  = explode("-",$row["pair"]);
            $coin = $mkt[0];
            $base = $mkt[1];
            echo '<a class="animate" href="?p=trade&market='.urlencode($row["pair"]).'" style="text-decoration: none;"><li class="mkt-normal" id="'.$row["pair"].'_div">'.$coin.'/'.$base.' <span class="price" id="'.$row["pair"].'_price">'.$row["last_price"].'</span></li></a>';
        }
        $query->close();
    }

}
函数getmarkets() { 全球$mysqli; $query=$mysqli->query(“从所有货币数据中选择对、最后一个价格”); $num\u rows=$query->num\u rows; 如果($num_rows>0){ 而($row=$query->fetch\u assoc()) { $mkt=explode(“-”,$row[“pair”]); $coin=$mkt[0]; $base=$mkt[1]; 回声'; } $query->close(); } }
准备好的声明

$stmt = $mysqli->prepare("SELECT user,message,timestamp FROM uc_support_replies WHERE tickethash = ? ORDER BY timestamp ASC");
    $stmt->bind_param('s',$ticket);
    $stmt->execute();
    $stmt->bind_result($user,$message,$timestamp);
    while($stmt->fetch())
    {
        if(in_array($user, $admins)) {
            $color = '0404B4';
        }else{
            $color = '2E2E2E';
        }
        $output .=
        '
        <div class="msgdiv">
        <hr class="five">
        <span class="user_name" style="color:#'.$color.'"><u>'.$user.'</u></span>
        </br>
        <span class="user_message">'.$message.'</span>
        </br>
        <span data-livestamp="'.$timestamp.'">'.$timestamp.'</span>
        <hr class="five">
        </div>
        ';
    }
$stmt=$mysqli->prepare(“从uc_支持_回复中选择用户、消息、时间戳,其中tickethash=?按时间戳排序ASC”);
$stmt->bind_参数('s',$ticket);
$stmt->execute();
$stmt->bind_result($user、$message、$timestamp);
而($stmt->fetch())
{
if(在数组中($user$admins)){
$color='0404B4';
}否则{
$color='2e';
}
$output=
'

“.$user。”
“.$message”
“.$timestamp。”
'; }
MySQL扩展自2012年底PHP 5.5.0以来就被正式弃用,将来将被删除。由于PHP5和更高版本,推荐的替代方案是MySQLi(“i”代表“改进”)

下面的代码应该可以很好地工作,并且更易于阅读

    while($row = mysql_fetch_assoc($result))
    {
        foreach ($row as $col_name => $col_val)
        {
            echo "<div id='column2'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
        }

    }
while($row=mysql\u fetch\u assoc($result))
{
foreach($col\u name=>$col\u val的行)
{
回声“{$colu_name}:$col_val
”; } }
更新 嗯,我不擅长HTML/CSS。如果我是你,我会喜欢这个

$row_num = 0;

$css_classes[0] = 'gray_style';
$css_classes[1] = 'white_style';

while($row = mysql_fetch_assoc($result))
{
    $row_num++;

    $class = $css_classes[$row_num % 2];

    foreach ($row as $col_name => $col_val)
    {
        echo "<div id='column2' class='$class'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
    }

}
$row\u num=0;
$css_classes[0]=“灰色样式”;
$css_classes[1]=“白色_风格”;
while($row=mysql\u fetch\u assoc($result))
{
$row_num++;
$class=$css_classes[$row_num%2];
foreach($col\u name=>$col\u val的行)
{
回声“{$colu_name}:$col_val
”; } }
unrelated,但您不能两次使用同一ID小心不要多次使用同一ID-使用class Instedi通常不会进行下一次投票,但您必须从mysql_*函数开始!它是2014You better use,更易于处理,最好看看红色框,并改为PDO或mysqli等现代API。感谢所有建议。我将用id交换类并切换到mysqli。不过,如果没有这些麻烦,2014年就可以了。这并不能回答问题。你是个英雄。我会投票支持这一点,但我还没有足够的声望点(很明显,我在这方面是新手)。谢谢。不要鼓励使用
mysql.*
。这解决不了任何问题。@InoSHeo不仅解决了这个问题,而且在一段时间内就有了foreach循环loop@r3wt看,OP想要打印所选表格的所有列。您的mysqli版本打印所有列?@r3wt在您的回答中,“您只获取第一行”=>否,OP已从resultset获取所有行。他的问题是他试图在
while()
循环中获取字段。
$row_num = 0;

$css_classes[0] = 'gray_style';
$css_classes[1] = 'white_style';

while($row = mysql_fetch_assoc($result))
{
    $row_num++;

    $class = $css_classes[$row_num % 2];

    foreach ($row as $col_name => $col_val)
    {
        echo "<div id='column2' class='$class'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
    }

}