关于PHP中PDO抽象层,采用rowCount();方法出现返回结果为0的解决
在学PHP的过程中,遇到一些问题,但不是全部都能够顺利得到解决,就在PDO抽象层,采用rowCount();方法出现数据能够正常查询出来的情况下返回结果为0,在网上搜了一天,没有一个具体的说明和解决方案,很多朋友在问,但却没有人回答,因此在这里稍微说说具体
在学PHP的过程中,遇到一些问题,但不是全部都能够顺利得到解决,就在PDO抽象层,采用rowCount();方法出现数据能够正常查询出来的情况下返回结果为0,在网上搜了一天,没有一个具体的说明和解决方案,很多朋友在问,但却没有人回答,因此在这里稍微说说具体的情况及最终的解决方案,不一定每个人都适用,但是希望能给和我遇到同样问题和在学习中纠结的朋友们一点帮助。
情况描述:
条件:采用$_sql = "SELECT id FROM dda_ddq WHERE name='123' LIMIT 1";语句进行查询,能正常打印出查询的结果集。
症状:利用rowCount();方法在本地能够打印出1,但上传到服务器后打印出0;
经过查询网上资料得出问题原因:
本地测试环境:5.0.51a
Mysql 5.0.45, PHP 5.2.5 returned 1在线测试环境:5.1.48
Mysql 5.1.30, PHP 5.1.6 returned 0
看到这里大部分的初级朋友应该明白了为什么本地代码可以正常运行,在线代码就出问题了吧。
解决方法其实非常简单,通过查询PHP5的帮助文档后,采用columnCount();但发现无论有无数据都只返回1值;
最后采用了判断语句的解决方法,勉强能用了,个人感觉应该还有更好的方法,只是我初学还不知道而已;
if($_st->fetchObject()){
return "1";
}else {
return "";
}
稍微优化了一下
return $_st->fetchObject() ? 1 : 0;
因此希望能和在PHP学习中的朋友们多多交流。