请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 2080|回复: 4

求助:findSql有结果集但是取字段值是NULL?

[复制链接]
发表于 2014-3-30 11:43:58 | 显示全部楼层 |阅读模式
今天遇到一个怪事,求高手看看是哪里出问题了。先贴代码:

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":"\u641c\u72d0","cp_address":"\u4e2d\u56fd"}]
echo $rtn就是NULL了,{"cp_address":null}
当然,直接echo $result['cp_address']也是一样的NULL
发表于 2014-3-30 17:10:48 | 显示全部楼层
如果echo $result是显示字符串而不是Array,那么证明它不是数组,看起来很像json。

估计你的程序比较乱,因为findSql的结果肯定是数组,建议你findSql直接直接dump结果出来看看。

另外,是不是你的程序已经是被重新覆盖findSql的
 楼主| 发表于 2014-3-30 23:18:07 | 显示全部楼层
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-3-30 23:39:08 | 显示全部楼层
解决了,使用dump($result[0]['cp_name']);就能取到值了,再问个别的问题,文档里写findsql是只查询一条记录,我实际使用发现是可以查询返回多条记录的,我看的文档不是最新的?
发表于 2014-3-31 09:33:30 | 显示全部楼层
dongxu0139 发表于 2014-3-30 23:39
解决了,使用dump($result[0]['cp_name']);就能取到值了,再问个别的问题,文档里写findsql是只查询一条记 ...

没听说过findSql只能查一条记录,也没有手册是这样写的,看看你的文档哪儿来的?

手册里面对findSql描述得并不多,主要是考虑到需要用SQL的、会dump一下结果的开发者,所以没做太多的说明。
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-8-7 02:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表