如何从db(php)回显表行

时间:2010-06-04 01:22:25

标签: php mysql

我希望回应特定查询中的所有内容。如果echo $ res我只得到一个字符串。如果我改变了第二个mysql_result参数,我可以获得第二个,第二个等等,但我想要的是所有这些,一个接一个地回应。如何将mysql结果变成我可以使用的东西?

我试过了:

$query="SELECT * FROM MY_TABLE";
$results = mysql_query($query);
$res = mysql_result($results, 0);

while ($res->fetchInto($row)) {
    echo "<form id=\"$row[0]\" name=\"$row[0]\" method=post action=\"\"><td style=\"border-bottom:1px solid black\">$row[0]</td><td style=\"border-bottom:1px solid black\"><input type=hidden name=\"remove\" value=\"$row[0]\"><input type=submit value=Remove></td><tr></form>\n";
}

6 个答案:

答案 0 :(得分:19)

$sql = "SELECT * FROM MY_TABLE";
$result = mysqli_query($conn, $sql); // First parameter is just return of "mysqli_connect()" function
echo "<br>";
echo "<table border='1'>";
while ($row = mysqli_fetch_assoc($result)) { // Important line !!! Check summary get row on array ..
    echo "<tr>";
    foreach ($row as $field => $value) { // I you want you can right this line like this: foreach($row as $value) {
        echo "<td>" . $value . "</td>"; // I just did not use "htmlspecialchars()" function. 
    }
    echo "</tr>";
}
echo "</table>";

答案 1 :(得分:12)

扩展接受的答案:

function mysql_query_or_die($query) {
    $result = mysql_query($query);
    if ($result)
        return $result;
    else {
        $err = mysql_error();
        die("<br>{$query}<br>*** {$err} ***<br>");
    }
}

...
$query = "SELECT * FROM my_table";
$result = mysql_query_or_die($query);
echo("<table>");
$first_row = true;
while ($row = mysql_fetch_assoc($result)) {
    if ($first_row) {
        $first_row = false;
        // Output header row from keys.
        echo '<tr>';
        foreach($row as $key => $field) {
            echo '<th>' . htmlspecialchars($key) . '</th>';
        }
        echo '</tr>';
    }
    echo '<tr>';
    foreach($row as $key => $field) {
        echo '<td>' . htmlspecialchars($field) . '</td>';
    }
    echo '</tr>';
}
echo("</table>");

优点:

  • 使用mysql_fetch_assoc(而不是没有第二个参数的mysql_fetch_array来指定类型),我们避免每个字段两次,一次是数字索引(0,1,2,..),第二次是关联键。

  • 将字段名称显示为表格的标题行。

  • 显示如何为每个字段同时获取column name($ key)和value($ field),以迭代行的字段。

  • 包裹在<table>中,以便正确显示。

  • 如果查询失败,
  • (可选)会显示查询字符串和mysql_error。

示例输出:

Id      Name
777     Aardvark
50      Lion
9999    Zebra

答案 2 :(得分:8)

 $result= mysql_query("SELECT * FROM MY_TABLE");
 while($row = mysql_fetch_array($result)){
      echo $row['whatEverColumnName'];
 }

答案 3 :(得分:2)

嵌套循环以显示结果表的所有行和列:

$rows = mysql_num_rows($result);
$cols = mysql_num_fields($result);
for( $i = 0; $i<$rows; $i++ ) {
   for( $j = 0; $j<$cols; $j++ ) {
     echo mysql_result($result, $i, $j)."<br>";
   }
}

可以通过在显示之前进行数据解密/解码,错误检查和html格式化来使其更加复杂。

在MS Edge&G Chrome,PHP 5.6中进行了测试

答案 4 :(得分:1)

$sql = "SELECT * FROM YOUR_TABLE_NAME";
$result = mysqli_query($conn, $sql); // First parameter is just return of "mysqli_connect()" function
echo "<br>";
echo "<table border='1'>";
while ($row = mysqli_fetch_assoc($result)) { // Important line !!!
    echo "<tr>";
    foreach ($row as $field => $value) { // If you want you can right this line like this: foreach($row as $value) {
        echo "<td>" . $value . "</td>"; 
    }
    echo "</tr>";
}
echo "</table>";

在PHP 7.x中,您应该使用mysqli函数,而在while循环条件中最重要的一个是使用“ mysqli_fetch_assoc()”函数,而不是“ mysqli_fetch_array()”函数。如果使用“ mysqli_fetch_array()”,则会看到结果重复。只需尝试这两个,看看有什么区别。

答案 5 :(得分:0)

此页面上的所有代码段都可以显着缩小。

mysqli 结果集对象可以立即提供给 foreach()(因为它是“可迭代的”),从而无需进行迭代的 _fetch() 调用。

内爆每一行将使您的代码在不修改代码的情况下正确打印结果集中的所有列数据。

$sql = "SELECT * FROM MY_TABLE";
echo '<table>';
    foreach (mysqli_query($conn, $sql) as $row) {
        echo '<tr><td>' . implode('</td><td>', $row) . '</td></tr>';
    }
echo '</table>';

如果你想对html实体进行编码,你可以映射每一行:

implode('</td><td>' . array_map('htmlspecialchars', $row))

如果您不想使用内爆,您可以使用关联数组语法简单地访问所有行数据。 ($row['id'])