php-warning:mysql_fetch_object

作者:  耕堂 | 本文浏览824次 | 2010年01月22日

做php代码测试的时候,warning这类警告类错误很常见,初学php可能常遇到的warning一般发生在与mysql数据交流时,比如函数mysql_fetch_object(),有时候会发生Warning,下面的内容主要和这一类的函数有关。

常见的warning形式:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result in……

字面上理解是:提供的参数无效,可能就是该php函数以上部分代码有问题,一般mysql_fetch_array()前面是从数据表中提取数据出来,这时候问题很可能出现在mysql语法上,比如

$mysql=”SELECT * FROM table WHERE row=’ “.$object.” ‘ “;

上面这段语法没啥问题,row后的值(加粗部分)可以不是变量,如object(视实际情况而定),如果是下面两种情况可能会引发上面的warning:

1.单引号丢失;
举个例子,如果把下面这段mysql语句在phpmyadmin内执行查询:

SELECT * FROM table WHERE row=object

phpmyadmin可能会返回unkown column “object” in where,这就是语法的问题,把object加上单引号应该就可以了;

2.加粗部分若是变量,双引号丢失;

这两种是比较常见的,也就是说还是mysql语法本身的问题,改正语法后问题应该能解决,如果不确定mysql语法是否有问题,可以像上例中在phpmyadmin中执行sql查询,检测一下。

如果在php函数mysql_fetch_array()前面加个”@”(无引号),运行代码不会出现warning,但是数据还是提取不出来,所以解决不了问题;

有人说可能是数据表内容为空,其实如果语法确实没错误,而数据表为空,浏览器应该不会返回warning,而可能会返回notice类的错误(提示没有相关数据);

同样,mysql_fetch_row()和 mysql_fetch_object()也会发生几乎一样的warning错误,因为它们的作用相似,原因也相差不大;

p.s.上面的问题自己遇到过,发出来供参考——耕堂gengtang.net

 右上方更多相关内容/站内搜索-关键词请用空格隔开

  • 标签 :  ,
  • 原文链接 : http://www.gengtang.net/dian-di/php-warning.html
  • 转载原创文章请注明 : 耕堂-gengtang.net
  • 发表留言

    可用HTML标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>