0

これはおそらく答えるのがそれほど難しい質問ではありません。私が書いたこのPHP関数に問題があります...行を1行ずつ返しますが、毎回4ずつ増加して返されます。したがって、1行目が出力され、次に5行目、次に9行目が出力されます...

function showDatabases() {

# $_GET variables from the URL.
$database = mysql_real_escape_string($_GET['database']);
$table    = mysql_real_escape_string($_GET['table']);   

$mysqli = new mysqli('127.0.0.1', 'root', '', $database);

$query_one = $mysqli->query("SELECT * from $table");

$num_rows   = mysqli_num_rows($query_one);
$num_fields = mysqli_num_fields($query_one);

    for ($x = 0; $x < $num_rows; $x++) {
       for ($c = 0; $c < $num_fields; $c++) {
            $row = mysqli_fetch_row($query_one);
            echo($row[$c]."&nbsp;&nbsp;");
       }
    echo("<br/>");
    }
}

ありがとう!

4

2 に答える 2

4

mysqli_fetch_row行全体をフェッチし、ポインタを次の行に移動します。各行に1回だけ呼び出す必要があります。今、あなたはそれを列ごとに一度呼んでいます。

あれは、

for ($x = 0; $x < $num_rows; $x++) {
   $row = mysqli_fetch_row($query_one);
   for ($c = 0; $c < $num_fields; $c++) {
        echo($row[$c]."&nbsp;&nbsp;");
   }
echo("<br/>");
}
于 2012-05-11T17:34:21.020 に答える
0

あなたはたった1つのループでそれを行うことができることを複雑にしています

$query = "SELECT * from $table";
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
        echo $row['fieldname']."&nbsp;&nbsp;";
    }
}

いつか順序を追加することをお勧めします。デフォルトの順序はidの順序ではありません。

于 2012-05-11T17:44:21.700 に答える