我是PHP的新手,我遇到了以下代码的问题...
<?php
// Connects to Database
mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$data = mysql_query("SELECT country_id, country_name FROM country, channels WHERE channels.channel_id = country.channel_id AND channels.channel_id = '1'")
or die(mysql_error());
echo "<table border=0 cellpadding=15>";
echo "<tr align = center bgcolor=white>
<td><b>Country ID</b></td><td><b>Country Name</b></td>" ;
while (mysql_fetch_row($data)) {
$cid = mysql_result($data, 1);
$cname = mysql_result($data, 2);
# inserts value into table as a hyperlink
echo "<tr align = center bgcolor=white><td>$cid</td><td><a href=view_country_detail.php?cid=$cid>$cname</td>";
}
# displays table
print '</table>';
?>为了解释我得到的问题,我在生成超链接后,向下钻取到从上面的代码共享要点击的国家的id的公司,然后在'view_country_detail‘页面上显示类似的布局。我搞不懂为什么表的输出为数据库中country列的前两个id提供了重复的行。任何帮助都将非常感谢,因为我在这里完全迷失了方向。谢谢
发布于 2012-09-11 23:08:50
尝试按如下方式组织您的while循环:
while($row = mysql_fetch_array($data)){
$cid = $row[0]; //if you have the column names, replace 0 with 'column_name'
$cname = $row[1];
//then echo statement
}此外,mysql_*函数已经启动了弃用过程,不应该再使用了,甚至在php手册页面上也不鼓励使用mysql_*。考虑使用类似的mysqli_* functions或PDO。
发布于 2012-09-11 23:08:39
我不明白为什么您使用mysql_fetch_row,然后又不想实际使用您获取的行。
您不应该在这里使用mysql_result。您所做的是从结果集的第1行提取数据,然后从第2行提取数据,而不管指针在while循环中的哪一行上。
试试这个:
while ($row = mysql_fetch_assoc($data)) {
$cid = $row['country_id'];
$cname = $row['country_name'];
}我个人发现,在使用mysql_fetch_assoc或mysql_fetch_array时,通过关联键引用字段在代码中的可读性要好得多。
发布于 2012-09-11 23:10:51
试试这个:
while ($row = mysql_fetch_row($data)) {
$cid = $row[0];
$cname = $row[1];
...
}mysql_fetch_row返回一个数组。
然而,
您应该考虑停止使用mysql_*函数-它们正被弃用。如果您切换到PDO或mysqli,它也有助于使您的代码更安全。
https://stackoverflow.com/questions/12372700
复制相似问题