日期获取为什么有时候是一个stdClass对象?

太久 2010-08-13 10:05:36
user类,有下面这么个函数,获取用户的信息.

class user
{
public function GetUserInfo($user)
{
$return = array();

$this->rDbConn->mSql = "select * from USER where uid = '" . addslashes($user) . "'";
$this->rDbConn->CreateConn();
$this->rDbConn->GetResult();
if ($this->rDbConn->GetRowNum()>0)
{
if ($this->rDbConn->GetRow())
{
$return = $this->rDbConn->mRow;
}
}
$this->rDbConn->Close();
return $return;
}
}

调用的时候如下:
$class_user = new User($db);
$userInfo = $class_user->GetUserInfo($user);


在服务器和本地机器上代码是一样,但是在服务器上获取到是一个字符串,可以直接echo,但在本地却是一个stdClass对象,如果直接输出,或者像array那样下标访问,就会提示类似如下的信息:
fatal error: Object of class stdClass could not be converted to string

实在很奇怪,找不到原因,代码是一样的,因为是复制的;数据库是MSSQL2005,服务器端是用备份还原的;web环境是用的wamp,
php版本5.2.11,apache版本2.2.11.
不知道是不是配置文件不同的关系?能想到的暂时只有这个了.
还请各位大侠帮忙,分数不多..

...全文
227 点赞 收藏 20
写回复
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
太久 2010-09-03
看样子我又要没发回复了..
回复
出来打酱油 2010-09-03
你确定session是正确的吗?
session在使用的时候应该是要先打开的.用start()方法.我记得是这样.
你打开了吗??
还有你最好调查一下$this->rDbConn->mRow这个东西返回的是什么.确定是字符串或数组吗??
回复
太久 2010-09-02
谢楼上的,不过为什么$_SESSION['loginfo']['userid']有风险呢?
回复
太久 2010-09-01
why?why?why?
回复
gxd305 2010-09-01
居然直接引用 $_SESSION['loginfo']['userid'] 这个是有风险的,呵呵。


这些东西对于调试很有用:
var_dump
var_export
debug_print_backtrace


var_dump 下$userInfo 看看是什么东西。

另外推荐一个
PHP调试技术手册
http://www.laruence.com/2010/06/21/1608.html
回复
heyli 2010-09-01
[Quote=引用 2 楼 xuzuning 的回复:]
你给出的信息不足!

print_r($userInfo);
看看都是些什么
[/Quote]
贴出打印出来的数据
回复
binbin1129 2010-08-25
你的$this->rDbConn是用的啥类库。。
应该跟这个的配置有点关系吧。。
回复
太久 2010-08-25
[Quote=引用 8 楼 zccmy22 的回复:]

用的什么软件,ZS吗?
按ctrl+左键。。看看能不能找到相关描述和进入相应代码。
这个错误最有可能的是你的,$_SESSION['loginfo']['userid']不存在。

echo $_SESSION['loginfo']['userid'];看看有没?
[/Quote]
$_SESSION['loginfo']['userid']确实存在的,获取到的是个对象,以访问成员的方式来访问还是能获取到内容的.
回复
zccmy22 2010-08-25
debug
回复
zccmy22 2010-08-25
用的什么软件,ZS吗?
按ctrl+左键。。看看能不能找到相关描述和进入相应代码。
这个错误最有可能的是你的,$_SESSION['loginfo']['userid']不存在。

echo $_SESSION['loginfo']['userid'];看看有没?
回复
zccmy22 2010-08-25
呵呵,显然没有引用到。
看一下,你的user类是否被引用进来了。
回复
太久 2010-08-25
[Quote=引用 12 楼 binbin1129 的回复:]

你的$this->rDbConn是用的啥类库。。
应该跟这个的配置有点关系吧。。
[/Quote]
这个和服务器上是一样的..直接覆盖...
回复
太久 2010-08-16

user类中GetUserInfo的定义
public function GetUserInfo($user)
{
$return = array();

$this->rDbConn->mSql = "select * from USER where uid = '" . addslashes($user) . "'";
$this->rDbConn->CreateConn();
$this->rDbConn->GetResult();
if ($this->rDbConn->GetRowNum()>0)
{
if ($this->rDbConn->GetRow())
{
$return = $this->rDbConn->mRow;
}
}
$this->rDbConn->Close();
return $return;
}

下面是调用
$class_user = new User($db);
$userInfo = $class_user->GetUserInfo($_SESSION['loginfo']['userid']);
$smarty->assign('regdate',$userInfo['reg_date']);

最后一行就出错提示
Catchable fatal error: Object of class stdClass could not be converted to string
但在服务器上就显示正常,楼上的方法也试过了,还是一样的问题.

回复
Dleno 2010-08-13
$userInfo = (array)$class_user->GetUserInfo($user);


回复
美人心计1999 2010-08-13
Object of class stdClass could not be converted to strin
------Object of class说明这个是个对象,打印对象当然是会报错的,打印他的属性就可以
回复
xuzuning 2010-08-13
你给出的信息不足!

print_r($userInfo);
看看都是些什么
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告