[英]Having issues with displaying data retrieved from a MySQL database with PHP
我是PHP的新手。 并且正在做一些示例项目来帮助我学习,这个项目的完成很有趣。 这里可能有一些愚蠢且难以理解的代码。 考虑到我是新手,可能存在语法错误,但是我一直在寻找没有运气的小时。
基本上,我正在制作一个非常简单的注释/聊天框系统,在其中发布数据的用户保持匿名。 我现在正在分开做事; 然后我计划将它们合并为一个。 我知道提交部分可以正常工作,因为我已经通过PHPMyAdmin检查了MySQL数据库,但是我似乎无法正确显示数据。 我已经搜索了两个多小时的简单语法错误,并放弃了将其引入可靠和友好的社区的决定。
我已将所有连接信息删除到数据库中,因为我知道所有这些信息都是正确的,因此我不希望将其公开显示在公共“论坛”上。
<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和名称。 ID是一个自动递增的INT,而名称则是一个文本设置。 ID也是数据库的主要对象。 提交系统运行正常,但显示效果不佳。
当我查看页面时,应该有text($ 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>
任何帮助,将不胜感激,谢谢。
我建议不要使用较早的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'];
}
在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);
您有来自MySQL的查询结果,但没有正确遍历它。 尝试:
$result=mysql_query($query);
if(mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
// print data
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.