我希望迭代从datebase中获取的元素
但结果看起来非常意外
我发现下面的代码打印了$value
和echo "<td id=".$key.$tag.">".$value."</td>";
两次。有什么我误解了吗?
function selectTable($table){
$sql= "SELECT * FROM ".$table ;
$result=mysql_query($sql)
or die(mysql_error());
return $result;
}
$table = 'battery_con';
$result = selectTable($table);
unset($table);
while($row = mysql_fetch_array($result)){
......
foreach ($row as $key => $value) {
print $value;
echo "<td id=".$key.$tag.">".$value."</td>";
}
.....
}
答案 0 :(得分:3)
请使用mysql_fetch_assoc()
mysql_fetch_array()
的地方
我希望它会有所帮助
答案 1 :(得分:3)
您正在使用mysql_fetch_array,默认情况下会返回一个每列包含两个元素的数组(这是第二个(可选)参数的含义:result_type = MYSQL_BOTH
)。
一个索引用表示列索引的整数索引,一个索引用列名索引。
这就是为什么你的列表中有两个条目。您可以将第二个参数设置为MYSQL_ASSOC
,以便每列只获得一个值。
答案 2 :(得分:1)
除了@ Andreas的默认答案mysql_fetch_array
给出了关联和数字索引,如果你不想这样,你可以用你的while循环中的第二个参数来限制它:
$row = mysql_fetch_array($result, MYSQL_NUM); // numeric keys only
$row = mysql_fetch_array($result, MYSQL_ASSOC); // associative keys only
正如前面提到的@sonusindhu,你也可以使用mysql_fetch_row
来获取数字键,或mysql_fetch_assoc
只获取关联键。
更新
不推荐使用mysql_xxx()函数,您应该考虑使用mysqli_xxx()函数。
有关详细信息,请参阅php手册的示例1: http://php.net/manual/en/mysqli-result.fetch-array.php