2012-04-18 4 views
2

でMySQLのテーブルを表示します。表示されるのは、それらに関連付けられた値ではない列名だけです。私は私のユーザー名パスワードとdbがすべて正しいことを知っているが、私はテーブルが私が追加した値を表示していないと言ったように。すべてのヘルプは非常にこれは私のmysqlのコードでいただければ幸いです。私はトラブルのPHPコードを使用して、私のMySQLのテーブルを表示するに抱えているPHP

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); 
?> 
+0

mysql/phpmyadminからテーブルを確認できますか? –

答えて

4

はこれを試してみてください。

enter image description here

+0

私はこのコードが何をしているのか理解していますが、前のコードと同じ結果が得られます。 –

+0

この関数を呼び出す前にテーブルに値があることを確認しましたか? –

+0

私はこれで家事をしました。私も結果を得ました。 –

0

最後の行に達したため、フェッチする行がもうないため、mysql_fetch_row()呼び出しが失敗します。表の行を印刷する前にmysql_data_seek(0);に電話をかけ、内部ポインタを最初の行に戻します。

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

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

    echo "</tr>\n"; 
} 

更新:

注:つもり異なるモデルで同じブランド名を追加しますので、あなたは主キーとしてブランドを作ることができない

+0

whileループの前にmysql_data_seek(0)を呼び出さなければなりませんか? –

0

また、あなたがfetch_fieldコールを使用している理由は、私が表示されていないデータをフェッチ

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>'; 
} 
3

のために試すことができます。私はあなたがあなたのテーブル内の各フィールドの実際の名前は、それのデータを呼び出すにが何であるかを前もって知っていると仮定していますか?私は、簡単に(より少ないループと入れ子になったループのために)フィールドの名前を手作業で記述し、次に値を入力するデータをループする必要があると思います。

$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;