mysqli_query打印无理由?

时间:2013-05-13 09:33:55

标签: php mysqli

我是PHP编程的新手,我尝试学习如何使用数据库。我已准备好MySQL,有1个数据库,包含1个包含7个条目的表。 问题是,当我尝试将条目输出到一个非常简单的表时,在创建表之前,它输出7次< BR />没有原因。 代码是这样的:

<?php
$con=mysqli_connect("localhost","root","**********", "*****");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}  else { echo "Connection was OK! <br/>";}

$result = mysqli_query($con,"SELECT * FROM pelates") or die(mysql_error());
echo "<table border='1'><tr><th>ID</th><th>Onoma</th><th>Epwnymo</th><th>Hlikia</th><th>Genethlia</th></tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr> <td>" . $row['id'] . "</td> <td>" . $row['name'] . "</td> <td>" . $row['surname'] . "</td> <td>" . $row['age'] . "</td> <td>" . $row['birthday'] . "</td></tr>";
echo "<br>";
}
echo "</table>";
mysqli_close($con);
?>

我相信的一切看起来都不错。以下是输出的一部分:

Connection was OK! <br/><table border='1'><tr><th>ID</th><th>Onoma</th>

正如你所看到的只有1&lt; br /&gt;消息“连接没问题”和表之间。在实际它产生另外7!以下是Chrome中的inspect元素的结果(与Firefox一样!):

Connection was OK! 
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<table border='1'><tr><th>

据我所知,当我定义:

$result = mysqli_query($con,"SELECT * FROM pelates") or die(mysql_error());

“内存”需要7个结果,但这不应该是真实的。为什么它会打印7个分组,而我没有告诉它?我能做些什么来阻止它?

非常感谢您的时间,并为这篇长篇文章感到抱歉。

3 个答案:

答案 0 :(得分:3)

您在表<br>中的行之间添加了</tr><br/><tr>. 正如您在FF和Chrome中提到的那样,检查元素会在表格之前显示它们。这是因为<br>不属于那里,浏览器必须把它放在某处,所以它把它们放在桌子前面。

如果您要显示源(而不是检查元素),您将得到正确的结果。

答案 1 :(得分:1)

这一切都是因为这一行

echo "<br>";

删除它。

原因是您没有在<br/>标记内放置<td></td>。所以它出现在<table>之前。

Codepad

答案 2 :(得分:-1)

在循环中删除echo "<br>";