使用超链接在PHP中向下钻取

时间:2012-09-11 15:02:27

标签: php

我是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'页面上显示类似的布局。我无法解决为什么表的输出为db中的country列的前两个id提供重复行。任何帮助将不胜感激,因为我完全迷失在这里。谢谢

3 个答案:

答案 0 :(得分:2)

我不明白为什么你使用mysql_fetch_row然后不想实际使用你获取的行。

你不应该在这里使用mysql_result。你正在做的是从结果集的第1行获取数据,然后从第2行获取数据,而不管指针在while循环中的哪一行。

试试这个:

while ($row = mysql_fetch_assoc($data)) {
    $cid = $row['country_id'];
    $cname = $row['country_name'];
}

我个人觉得在使用mysql_fetch_assocmysql_fetch_array时使用的关联键引用字段时,代码更具可读性。

答案 1 :(得分:1)

尝试按如下方式构建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。

答案 2 :(得分:0)

试试这个:

while ($row = mysql_fetch_row($data)) {
    $cid = $row[0];
    $cname = $row[1];
    ...
}

mysql_fetch_row返回一个数组。

<强>无论其

您应该考虑停止使用mysql_ *函数 - 它们已被弃用。如果你切换到PDO或mysqli,它也有助于使你的代码更安全。