求助:findSql有结果集但是取字段值是NULL?
发布于:2022-01-17 09:50:54
#1 dongxu0139
今天遇到一个怪事,求高手看看是哪里出问题了。先贴代码:
function getcompanyinfo()
{
$cp_name=urldecode($this->spArgs("cp_name"));
$sql="SELECT * FROM cp_company WHERE cp_name = '".$cp_name."'";
$result=spClass("cp_company")->findSql($sql);
$rtn = array('cp_address' => $result['cp_address']);
echo json_encode($rtn);
}
echo $result是有值的,[{"cp_id":"36","cp_name":"641c72d0","cp_address":"4e2d56fd"}]
echo $rtn就是NULL了,{"cp_address":null}
当然,直接echo $result['cp_address']也是一样的NULL
2014-03-30 11:43:58
#2 jake
如果echo $result是显示字符串而不是Array,那么证明它不是数组,看起来很像json。
估计你的程序比较乱,因为findSql的结果肯定是数组,建议你findSql直接直接dump结果出来看看。
另外,是不是你的程序已经是被重新覆盖findSql的
2014-03-30 17:10:48
#3 dongxu0139
jake 发表于 2014-3-30 17:10
如果echo $result是显示字符串而不是Array,那么证明它不是数组,看起来很像json。
估计你的程序比较乱, ...
老大,我按你要求又精简了一下源码,去掉了无问题无关的转码,代码如下:
function getcompanyinfo()
{
$sql="SELECT * FROM cp_company LIMIT 1";
$result=spClass("cp_company")->findSql($sql);
}
如果下一句是dump($result);输出为
Array
(
[0] => Array
(
[cp_id] => 1
[cp_name] => 大食代
[cp_address] => 世纪华联
)
)
如果下一句是dump(json_encode($result));输出为
[{"cp_id":"1","cp_name":"大食代","cp_address":"世纪华联"}]
如果下一句是dump($result['cp_name']);输出为空
我的问题就是,为什么结果集有内容,按字段取值就为空了,我这是照着示例写的啊???
2014-03-30 23:18:07
#4 dongxu0139
解决了,使用dump($result[0]['cp_name']);就能取到值了,再问个别的问题,文档里写findsql是只查询一条记录,我实际使用发现是可以查询返回多条记录的,我看的文档不是最新的?
2014-03-30 23:39:08
#5 jake
dongxu0139 发表于 2014-3-30 23:39
解决了,使用dump($result[0]['cp_name']);就能取到值了,再问个别的问题,文档里写findsql是只查询一条记 ...
没听说过findSql只能查一条记录,也没有手册是这样写的,看看你的文档哪儿来的?
手册里面对findSql描述得并不多,主要是考虑到需要用SQL的、会dump一下结果的开发者,所以没做太多的说明。
2014-03-31 09:33:30