2

PHP コードを使用して mysql テーブルを表示できません。表示されるのは、列に関連付けられた値ではなく、列名だけです。ユーザー名パスワードとデータベースがすべて正しいことはわかっていますが、前述のように、テーブルに追加した値が表示されていません。これは私のmysqlコードです:

CREATE TABLE Guitars
(
  Brand  varchar(20)  NOT NULL,
  Model  varchar(20)  NOT NULL,
  PRIMARY KEY(Brand)
);

insert into Guitars values('Ibanez','RG');
insert into Guitars values('Ibanez','S');
insert into Guitars values('Gibson','Les Paul');
insert into Guitars values('Gibson','Explorer');

そして、これは私のPHPコードです:

<?php
$db_host = '*****';
$db_user = '*****';
$db_pwd = '*****';

$database = '*****';
$table = 'Guitars';

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");

// sending query
$result = mysql_query("SELECT * FROM {$table}");
if (!$result) {
    die("Query to show fields from table failed");
} 

$fields_num = mysql_num_fields($result);

echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
    $field = mysql_fetch_field($result);
    echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
// printing table rows
while($row = mysql_fetch_row($result))
{
    echo "<tr>";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
     foreach($row as $cell)
        echo "<td>$cell</td>";

    echo "</tr>\n";
}
mysql_free_result($result);
?>
4

4 に答える 4

4

これを試して:

// printing table rows
while($row = mysql_fetch_row($result))
{
    echo "<tr>";

    echo "<td>$row[0]</td>";
    echo "<td>$row[1]</td>";

    echo "</tr>\n";
}

アップデート:

注: 異なるモデルに同じブランド名を追加するため、ブランドを主キーにすることはできません。

ここに画像の説明を入力

于 2012-04-18T00:27:00.220 に答える
3

fetch_field通話を使用する理由がわかりません。データを呼び出すに、テーブル内の各フィールドの実際の名前が何であるかを事前に知っていると思いますか? 簡単にするために(ループとネストされたループを減らすため)、フィールドの名前を手動で記述してから、値を入力するデータをループする必要があると思います。

$feedback .= "<table border='1'><tr>";
$feedback .= "<th>Brand</th><th>Model</th></tr>";

while ($row = mysql_fetch_array($result)) {
   $feedback .= "<tr><td>" . $row['Brand'] . "</td>";
   $feedback .= "<td>" . $row['Model'] . "</td></tr>";
}

$feedback .= "</table>";

echo $feedback;
于 2012-04-18T00:49:01.493 に答える
0

ヘッダーの表示が完了するまでに、クエリ結果の内部ポインターが最後の行に到達mysql_fetch_row()するため、フェッチする行がなくなるため、呼び出しは失敗します。テーブル行を出力する前に呼び出しmysql_data_seek(0);て、内部ポインターを最初の行に戻します。

于 2012-04-18T00:21:26.463 に答える
0

データのフェッチを試すこともできます

while ($fielddata = mysql_fetch_array($result))
{
    echo '<tr>';
    for ($i = 0; $i<$fields_num; $i++) // $fields_num already exists in your code
    {
        $field = mysql_fetch_field($result, $i);
        echo '<td>' . $fielddata[$field->name] . '</td>';
    }
    echo '</tr>';
}
于 2012-04-18T00:38:11.063 に答える