2012-04-18 87 views
2

我在使用php代碼顯示我的mysql表格時遇到了麻煩。它顯示的只是列名而不是與它們相關的值。我知道我的用戶名密碼和數據庫都是正確的,但就像我說的表不顯示我添加的值。任何幫助將非常感激這是我的MySQL代碼:用php顯示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); 
?> 
+0

你可以從mysql/phpmyadmin檢查你的表嗎? – 2012-04-18 01:02:33

回答

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

更新:

注意:你不能讓品牌作爲主鍵,因爲你要爲不同型號添加同一品牌的名字。

enter image description here

+0

我明白這段代碼在做什麼,但它會產生與我以前的代碼相同的結果。它顯示的表格只顯示品牌和型號,而不顯示值 – 2012-04-18 00:39:01

+0

您是否在調用此功能之前確保表格具有值? – 2012-04-18 00:41:03

+0

我做了一個家庭作品,我也得到了結果。請參閱更新 – 2012-04-18 00:46:25

0

到時候你就大功告成了顯示標題,查詢結果的內部指針會已經到達最後一行,所以你的mysql_fetch_row()調用失敗,因爲沒有更多的行要獲取。在打印表格行之前調用mysql_data_seek(0);,將內部指針移回第一行。

+0

我必須在while循環之前調用mysql_data_seek(0)嗎? – 2012-04-18 00:39:32

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