$query=mysql_query("select * from user where id={$_POST['id']}");
  while($result=mysql_fetch_array($query)){
       echo $result['name'];
   }
 这是一段简单的php查询程序。现在有一个问题,就是如果$_POST['id']在表里找不到,即 mysql_query()查找不到结果。
页面是没有显示结果,但是用FF抓包的时候,会响应错误如下:
  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ./././ line  xx我现在不想让他报错,想在程序中加个判断。应该如何加?
  
   我尝试了if($query)    if($query != false)   if(mysql_num_rows($query)<1)    if(mysql_fetch_array($query))
都没有用。
   mysql_query 如果查询不到,会返回指针还是false?
这个判断应该怎么写啊?大家帮个忙。谢谢了……

解决方案 »

  1.   

    你先var_dump(mysql_fetch_array($query)))看看,返回的是什么,你不就知道了
      

  2.   

    不应该像你说的
    当mysql_query()查询到匹配的结果时,返回的是一个 resource类型的结果集
    当没有匹配的结果时,返回的也是 resource类型的结果集
    当查询出错的时候返回false
      

  3.   

    var_dump出来的是resource(4) of type (mysql result) 
     这个我差不多知道、
         我只是不知道要怎么判断。。
    不信,你们可以写个简单的程序试试,火狐下的抓包工具,抓出来的应该是个错误。。
      

  4.   

    额。。
       其实是这样的。
          我在a.php 中用了 ajax   post了几个值到  mysql.php  中。
    查询的时候,我故意把查询的某个值弄错了,然后,在火狐下抓出来就是我上面说的错误。
      但是我刚才用test.php写了一个文本,把查询的值输入进去,然后直接表单post到mysql.php,又没有报错。。
      这是神马原因呢????我郁闷的说……
      

  5.   

    那么就是你a.php的原因了。
    不妨把代码贴出来, 顺带把mysql.php也贴出来吧
      

  6.   

    不会的。
    如果有错误,多半是你的$_POST['id']没有取到值。否则不会报错误的..
      

  7.   

    你就不用post的的方法,直接用get运行mysql.php,同一个id看看结果是什么
      

  8.   

    对于 $query=mysql_query("select * from user where id={$_POST['id']}");
    若 $_POST['id'] 不存在,或为空,则 SQL 指令为
    select * from user where id=若 $_POST['id'] 是非数字量,他已说“故意把查询的某个值弄错了”则 SQL 指令为
    select * from user where id=xxx
    xxx为字符串则必然产生查询错误!
    出现错误会有文本类型的错误信息,ff居然要通过抓包才能看见,这个ff应该抛弃了
      

  9.   

    哥几个,对不住了,我自己的原因。没有仔细的测试,随便写了个程序测试一下,觉得不对劲,就跑来乱说。  可能是星期天还在加班,状态不好吧…今天测试了一下,mysql_query()如果查询不到值,返回的是false
    所以,直接if($query){ }else{ } 
     
     哎。。我这2B榆木脑袋……
    分散了啊。