news_users
id   username    classid(栏目ID)
1      abc          2news_class 
id    classname (栏目名称)
2       最新动态一般的单表查询我会,但是两张以上的查询就犯糊涂了,恳请大家指教,非常感谢!
如何根据当前用户所在表的classid,输出当前用户所在的栏目名称??

解决方案 »

  1.   

    select c.classname  from news_class as c left join news_users as u where c.id=u.classid;   //是这个意思吗?
      

  2.   

    我也不太清楚这个语句是否成功,mysql我不是很懂!^_^!
    完整的代码是不是这样写??请前辈指教!$result2 = $db->query("select c.classname from news_class as c left join news_users as u where c.id=u.classid");
    if (($result2) ==1) {
    echo $rs2['classname'];
    }
      

  3.   

    上面写错了,更正:$result2 = $db->query("SELECT c.classname FROM news_class AS c INNER JOIN news_users AS u ON u.classid=c.id");
    $row1=$db->fetch_assoc($result2 );  //如果两个表中关联的数据大于一条就要用while循环 了。
    echo $row1[classname] ;  
      

  4.   

    两个表关联的数据肯定大于一条,我按照您的方法重新修改了,功能完整代码如下:<?php
    if($_GET['act']== "")
    {
    $username = $_SESSION["username"];
    $show = $db->getfirst("select * from  news_users where username='$username'");

    $result=$db->query("select * from news_users");
    while($row=$db->getarray($result)){
    ?>
    <table class="table" cellspacing="1" cellpadding="4" width="100%" align="center">
      <tbody>
    <tr>
      <td class="title" align="center" colspan="2" height="25"><strong>用户资料</strong></td>
    </tr>
    <tr>
      <td class="title" align="right">用 户 名:</td>  
     <td height="23"  width="5%"><div align="center"><?php echo $show[id]?>" /><?php echo $show[username]?></td>
    </tr>
    <tr>
      <td class="title" align="right" width="23%">所在栏目:</td>
      <td height="23"  width="5%">
        <?php
    while($row=$db->getarray($result)){
    $result2 = $db->query("SELECT c.classname FROM news_class AS c INNER JOIN news_users AS u ON u.classid=c.id");
    if (mysql_num_rows($result2) ==1) {
    $row2 = $db->getarray($result2);
    echo $row2['classname'];
    }
    ?>
      </td>
    </tr>
      </tbody>
    </table>
    <?php }?>
    <?php 
    }
    .....................................
    ?>
      

  5.   

    我根据一段后台代码(用户列表)重新修改了一下代码,并应用到这里来。即程序自动获取当前用户所在的栏目,目前栏目classname已经成功输出,但是却是把数据库中所有的classname都输出,导致出现多个表格,也就是说根据当前用户判断其所在的栏目这一个判断条件没有生效,请各位大虾指点!!代码如下:<?php
    if($_GET['act']== "")
    {
        $username = $_SESSION["username"];
        $show = $db->getfirst("select * from  news_users where username='$username'");
        $result=$db->query("select * from news_users");        
        while($row=$db->getarray($result)){
    ?>
     <table class="table" cellspacing="1" cellpadding="4" width="100%" align="center">
    .............................
    <td class="title" align="right" width="23%">所在栏目:</td>
              <td height="23"  width="5%">
                <?php    
        while($row=$db->getarray($result)){
        $result2 = $db->query("SELECT c.classname FROM news_class AS c INNER JOIN news_users AS u ON u.classid=c.id");
            if (mysql_num_rows($result2) ==1) {
                $row2 = $db->getarray($result2);
                echo $row2['classname'];
            }
    ?>
              </td>
            </tr>
          </tbody>
        </table>
    <?php }?>
    <?php 
    }
    .....................................
    ?>
     $result=$db->query("select * from news_users");        
    这句语句在我参考的代码段里面是一句列举用户ID列表和页数的,,这里我略作了修改,原句是
    $result=$db->query("select * from `".$prefix."user` order by id desc limit $offset,$num");
      

  6.   

    总觉得是查询这个地方出错的,判断条件不起作用,所以保持文件头部不变,将查询代码再次修改了一下,如下:<?php
    /* 获取栏目信息*/
    $result2 = $db->query("select * from `".$prefix."class` where id=".$row['classid']);
    if (mysql_num_rows($result2) == 1) {
    $row2 = $db->getarray($result2);
    echo $row2['classname'];
    } else {
    echo '获取栏目信息失败';
    exit;
    }
    ?>但是还是将所有的classname输出
      

  7.   

    "SELECT c.id FROM news_users u JOIN news_class c ON u.classid=c.id WHERE u.username=$username"
    你试下这个sql语句,应该没问题
      

  8.   

    在数据库执行,提示错误:#1054 - Unknown column '$username' in 'where clause' 页面提示错误:
    SQL语句错误: SELECT c.id FROM news_users u JOIN news_class c ON u.classid=c.id WHERE u.username=admin 
      

  9.   

    字符型的参数要加引号!
    "SELECT c.id FROM news_users u JOIN news_class c ON u.classid=c.id WHERE u.username='$username'"