我想通过用户输入的名称(name),查询数据库后显示对应的介绍(intro)。代码如下: //接受来自HTML页面的参数q,并赋值给变量 $d 
$d= $_GET["q"]; //开启mysql连接,名为$conn 
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误"); //打开数据库hoho 
mysql_select_db("hoho", $conn); 
mysql_query("set names 'utf8'"); //定义以name为关键字进行查询的SQL语句,作为字符串赋值给变量 $sq0。 
$sq0="select * from site WHERE name ='$d'"; //执行上面的SQL语句 
$qy0=mysql_query($sq0,$conn); //调用系统函数mysql_fetch_array( ) ,将结果数组化以后存储在数组$result中 
$result=mysql_fetch_array($qy0); //-----------------------------------------第22行--//输出文字介绍字段中的内容 
echo $result['intro'] ; 
网页中介绍信息没有显示出来,有以下提示: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\n\mid.php on line 22 还有很奇怪的是,在IE下不能显示,而在firefox下有时能显示有时不能。 
请问大家是怎么回事,应该如何修改? 
谢谢大家!

解决方案 »

  1.   

    最大的可能性是查询语句有错
    在倒数第二句加上echo $sq0
      

  2.   

    mysql_fetch_array()   这个函数只是从记录集中取一条记录并赋值给一个数组,然后指针移到下一条记录。不是把整个结果集都直接赋值到一个二维数组。想获取收有查询到的行。要用循环  
      while($rs6=mysql_fetch_array($result6){  
      .........................  
      }
      

  3.   

    如果还有错误或者警告信息,在mysql_fetch_array()前面加一“@”符号即可!
      

  4.   

    给你看一下,这个论坛上的解决办法吧http://bbs.phpchina.com/viewthread.php?tid=98067
      

  5.   

    输出sql来看看.  $sq0="select * from site WHERE name ='$d'";后面加上:
    echo $sql;
    exit;
    再把输出的语句复制下到mysql管理平台上测试下(phpmyadmin或Mysql Administrator)
      

  6.   

    套用你的代码,换我自己的MYSQL数据库测试没有任何问题,执行正常。
      

  7.   

    $qy0=mysql_query($sq0,$conn); 
    ===>
    $qy0=mysql_query($sq0,$conn) or die('查询失败'); 
      

  8.   

    谢谢大家!没想到这么快就有这么多热心的回复,CSDN真是个好地方。
    但问题仍然存在回复2楼:
    echo $sq0;   看到的是 select * from site WHERE name ='昆明'     (昆明是输入的地点)回复5楼:
    已经试过(上一句),执行正常,可以找到相应的一条记录回复7楼:
    回复3,8,9楼:
    那样就达不到效果啊,因为结果没有显示出来
      

  9.   


    把sql在数据库上执行一下,看看是否正常。22行出毛病,编码不一致的可能性也比较大。
      

  10.   

    程序的编码要一致 将 文本 数据库 数据库连接 的编码 都改成utf8的马虎聚搜
      

  11.   

    name和intro字段的编码是gbk_chinese_ci开始PHP文件里用的是utf8,但我改为gbk也是不对啊请问:一般支持中文搜索的PHP+Mysql程序,各部分分别用的是什么编码方式?
      

  12.   


    都改为utf8,没有报错了,也没有结果
      

  13.   


    不用怀疑,问题应该是在这句:$qy0=mysql_query($sq0,$conn); $qy0很可能是false所以应该在$result=mysql_fetch_array($qy0); 之前加上判断。可以这样做:
    if($qy0=mysql_query($sq0,$conn))
    {
    #取值
    $result = array();
    $count = mysql_num_rows($qy0);for($i=0;$i<$count;$i++)
    {
       $result[]=mysql_fetch_array($qy0); 
    }
      mysql_num_rows
    }
      

  14.   

    谢谢你的热心帮助!现在的状况是:在firefox下已经完全正常了,也没有任何警告。
    在IE下也没有报错,只是无法显示。
    我找到了原先firefox下时好时坏的原因:
    由于本页面是从home.html链接过来的,而home页面的编码是gbk。故每次链接到查询页面时会和查询页面的utf8冲突,导致无法显示并警告。
    谢谢大家,但IE下为什么不能显示呢?