小弟刚刚接触PHP,现在遇到这样的问题:
<?php
    $sqlstr="select news_picaddress,news_head from news where news_pic=1";
    mysql_connect("localhost","myuserid","mypassword");
    $result = mysql_db_query("xinwen",$sqlstr);    
    printf("Return Rows Num: %d\n",mysql_num_rows($result));//输出2
    printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
    while ($rs=mysql_fetch_array($result))
    {  
        print_r($rs); //输出1; 
        $picaddress=$rs[0]; // $picaddress为null
        $picaddress=$rs['news_picaddress']; // $picaddress为null
        $picaddress=$rs["news_picaddress"]; // $picaddress为null
     }
?>
这是为什么呢?为什么mysql_result有值,而mysql_fetch_array不能正确的提取出查询到的值呢? 

解决方案 »

  1.   


    printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
    你把這一句去掉然後PHP官方強烈建議在PHP 4.0後不要用mysql_db_query, 應用mysql_select_db 和 mysql_query 來進行查詢
      

  2.   

    大侠,        $sqlstr="select 'news_picaddress','news_head','news_class_id','news_type_id','news_id' from news where news_pic=1";
    $linkrs = mysql_connect("localhost","root","root");
    if (!$linkrs) 
    {
    die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("xinwen");
    $result = mysql_query($sqlstr);
    $rows_num = mysql_num_rows($result); //$rows_num=2
    $count = 0;
            while ($rs=mysql_fetch_array($result,MYSQL_ASSOC) && $count < 5)
    {
    print_r($rs); //输出1
    $picaddress=$rs["news_picaddress"]; //值为null
                    $count++;
            }还是不行。
      

  3.   

    给出 print_r($rs);    的结果
      

  4.   

    在if(!$links)的判断后面加一个
    mysql_query('SET  NAMES gbk');或者是mysql_query('SET NAMES utf-8')  设置下编码,有时候,编码不一致。会显示乱码或者是什么也不显示的
      

  5.   

    加上了
            if (!$linkrs) 
    {
    die('Could not connect: ' . mysql_error());
    }
    $temp = mysql_query('SET NAMES GBK');
    $temp值为true,然后还是不行,我的Mysql设置为gbk的编码了,utf-8的也不行
      

  6.   

        $result = mysql_query($sqlstr);
    ===================================mysql_query(sql,数据库连接);要两个参数噢。
      

  7.   

    $sqlstr="select news_picaddress,news_head from news where news_pic=1";
      mysql_connect("localhost","myuserid","mypassword");
      $result = mysql_query($sqlstr);   
      printf("Return Rows Num: %d\n",mysql_num_rows($result));//输出2
      printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
      while ($rs=mysql_fetch_array($result))
      {   
      print_r($rs); //输出1;  
      $picaddress=$rs[0]; // $picaddress为null
      $picaddress=$rs['news_picaddress']; // $picaddress为null
      $picaddress=$rs["news_picaddress"]; // $picaddress为null
      }
      

  8.   

    首先谢谢您的回答,现在我的代码是这样的:
    $sqlstr="select 'news_picaddress','news_head','news_class_id','news_type_id','news_id' from news where news_pic=1";
    $linkrs = mysql_connect("localhost","root","root");
    if (!$linkrs) 
    {
    die('Could not connect: ' . mysql_error());
    }
            mysql_query('SET NAMES gbk') or die('set failed :'. mysql_error());
    mysql_select_db("xinwen",$linkrs) or die ('select failed :'. mysql_error());
    $result = mysql_query($sqlstr,$linkrs) or die ('query failed :'. mysql_error());;
    $rows_num = mysql_num_rows($result);//$rows_num值为2
    $count = 0;
    while ($rs=mysql_fetch_array($result,MYSQL_ASSOC) && $count < 5)
    {
    print_r($rs);//输出1
    echo "\n";
    echo $rs;//输出1
    echo "\n";
    echo $rs["news_head"];//无输出
                    $count++; 
            }
    如果用printf("Return : %s\n",mysql_result($result,0,"news_head"));仅仅输出news_head字段名。
      

  9.   

    小弟就是在看php5的书,然后想实验下加深印象,结果就是这样百思不得其解快三天了
      

  10.   

    問題是 print_r($rs);//输出1 這裏本來應該是要輸出一個陣列的
    卻變成一個數我建議你在資料庫中 跑一下 你的sql
    看看資料庫查詢的結果是怎麼樣
      

  11.   

    谢谢各位大侠的帮助,下午莫名其妙的好了感谢ghostxyz0和xuzuning对print_r($rs)的不正常输出问题的指出。同时感谢poorprogramer对编码的提醒。ps:是utf8,没有中划线。分就这么多,不好意思了。