<html>
<head>
<title>Test</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
$username ="matt";
$pass = "bs12kfj";
$db = "mytest";
$tbl = "test2";
mysql_connect(localhost,$username,$pass);
mysql_select_db($db) or die( "Unable to select database");
$res = mysql_query("SELECT * FROM test2;");
$num = mysql_numrows($res);
echo "<table border='2'><tr>The Peeps</tr>";
while ($r = mysql_fetch_array($res)) {
echo "<tr>";
foreach($r as $rs){
echo "<td>$rs</td>";
}
echo "</tr>";
}
?>
</body>
此代码执行时没有错误,但输出包含每行的每一列的副本,如此。
<table border='2'><tr>The Peeps</tr>
<tr><td>"matt"</td><td>"matt"</td><td>"phillips"</td><td>"phillips></td><td>"mathew.p@waburg.com"</td><td>"mathew.p@waburg.com"</td><td>20</td><td>20</td></tr><tr><td>"paul"</td><td>"paul"</td><td>"franklin"</td><td>"franklin"</td><td>"dude@live.com"</td><td>"dude@live.com"</td><td>30</td><td>30</td></tr><tr><td>"steve"</td><td>"steve"</td><td>"jobs"</td><td>"jobs"</td><td>"sjobs@apple.com"</td><td>"sjobs@apple.com"</td><td>23</td><td>23</td>
如果echo语句中只有一个<td></td>
标记,我不明白为什么每列都重复。
我还检查了数据库,表中没有重复的条目。
答案 0 :(得分:6)
如果你没有提供第二个参数,这就是mysql_fetch_array
的作用:获取一个关联数组,其中值被映射到列名和列索引。
您可以提供MYSQL_ASSOC
作为第二个参数,只包含列名(或使用mysql_fetch_assoc
)。
答案 1 :(得分:2)
您可能正在以MYSQL_BOTH
的默认模式获取MySQL结果数组。
试试这个:
while ($r = mysql_fetch_array($res,MYSQL_ASSOC)) {
echo "<tr>";
foreach($r as $rs){
echo "<td>$rs</td>";
}
echo "</tr>";
}
如果你没有为mysql_fetch_array()
指定第二个参数,那么使用MYSQL_BOTH
,你最终得到一个值的关联数组索引和一个数字数组索引,如下所示:
array(0 => 'field 1 val', 'field1_name'=> 'field 1 val',
1 => 'field 2 val', 'field2_name'=> 'field 2 val', etc);
指定MYSQL_ASSOC
或MYSQL_NUM
将仅分别检索关联值或数字索引值。
答案 2 :(得分:1)
更改
while ($r = mysql_fetch_array($res)) {
到
while ($r = mysql_fetch_array($res, MYSQL_NUM)) {
或
while ($r = mysql_fetch_array($res, MYSQL_ASSOC)) {
mysql_fetch_array()
的第二个参数的默认值为MYSQL_BOTH
,它会返回一个以数字方式和关联索引的数组。或者,您可以使用mysql_fetch_row()
(返回数字索引数组)或mysql_fetch_assoc()
(返回关联数组)而不是mysql_fetch_array()
。
答案 3 :(得分:0)
易。
如果您的SQL查询是
SELECT foo FROM bar
然后mysql_fetch_array返回2个结果。一个带有数字索引,一个带有字段名称。在代码中添加print_r($ r)以查看行为。
解决方案? Use mysql_fetch_assoc