在使用PHP显示从MySQL数据库检索的数据时遇到问题

时间:2012-03-22 05:03:44

标签: php mysql html sql

我是PHP的新手;我正在做一些示例项目来帮助我学习,这个项目是为了好玩而完成的。这里可能存在一些愚蠢且非常难以理解的代码。考虑到我是新手,可能存在语法错误,但我一直在寻找几个小时没有运气。

基本上我正在制作一个非常简单的评论/ shoutbox系统,其中发布数据的用户保持匿名。我现在分开做事;然后我计划将它们合二为一。我知道提交部分工作正常,因为我已经通过PHPMyAdmin检查了MySQL数据库,但是我似乎无法正确显示数据。我因为我的简单语法错误而搜索了超过2个小时,并放弃了决定将它带到一个可靠友好的社区。

我已将所有连接信息删除到我的数据库,因为我知道所有这些都是正确的,我宁愿不在公共'论坛'上公开它。

<html>
<body>
<?php
$username="";
$password="";
$database="";

mysql_connect("localhost",$username,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM data";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();
?>
<table border="2" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif">Name(No specific order)</font></th>
</tr>

<?php
$i=0;
while ($i < $num) {

$    name=mysql_result($result,$i,"");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $name; ?></font></td>
</tr>

<?php
$i++;
}
?>
</body>
</html>

我有两个表,id和name。 ID是自动增量INT,名称设置为文本。 ID也是数据库的主要部分。提交系统工作正常,但显示不是。

当我查看页面时,应该有文本($ name),而是我得到一个空白区域,而没有文本。这是我访问页面时收到的内容,只有一个数据库条目:

<html>

<body>

<table border="2" cellspacing="2" cellpadding="2">

<tr>

<th><font face="Arial, Helvetica, sans-serif">Name(No specific order)</font></th>

</tr>





<tr>

<td><font face="Arial, Helvetica, sans-serif"></font></td>

</tr>



</body>

</html>

任何帮助都将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:3)

我建议不要使用旧的mysql _ *()函数。你可以做这样的事情(通过PDO_mysql扩展):

<?php
    $pdo = new PDO('mysql:host=localhost;dbname=YOURDBNAME', $username, $password);
    $query = "SELECT * FROM data";
    $stmt = $pdo->prepare($query);
    $stmt->execute(array());
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

然后,你会用以下内容循环:

    foreach ($results as $res) {
        echo $res['column_name'];
    }

答案 1 :(得分:2)

while loop尝试显示名称时出现问题。

替换为以下内容:

 <?php
    if($num >0) {
       while ($row=mysql_fetch_assoc($result)) {
         ?>
        <tr>
           <td><font face="Arial, Helvetica, sans-serif"><?php echo $row['name']; ?></font></td>
        </tr>
        <?php

        }
      }
  ?>

改变:

$num=mysql_numrows($result);

$num=mysql_num_rows($result);

答案 2 :(得分:1)

你有来自MySQL的查询结果,但你没有正确地循环它。尝试:

$result=mysql_query($query);
if(mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_assoc($result))
    {
        // print data
    }
}