做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
右上方更多相关内容/站内搜索-关键词请用空格隔开
发表留言