用php显示mysql表格

问题描述:

我在使用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

试试这个:

// 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

到时候你就大功告成了显示标题,查询结果的内部指针会已经到达最后一行,所以你的mysql_fetch_row()调用失败,因为没有更多的行要获取。在打印表格行之前调用mysql_data_seek(0);,将内部指针移回第一行。

+0

我必须在while循环之前调用mysql_data_seek(0)吗? – 2012-04-18 00:39:32

您也可以尝试读取数据

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

我不明白你为什么要使用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;