我目前遇到PHP问题,我收到此错误,
Object of class stdClass could not be converted to string
当我在我的网站中运行此部分代码时发生错误
function myaccount() {
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
//var_dump($data['user_data']);
$this->load->model('users_model');
$data['user_info'] = $this->users_model->get_user_and_roadmaps_by_id($this->uri->segment(3));
$this->template->build('users/my_account', $data);
}
发生错误的行就是这一行,
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
这一行正在调用此函数,
function get_userdata() {
$CI =& get_instance();
if(!$this->logged_in()) {
return false;
} else {
$query = $CI->db->get_where('users', array('user_id' => $CI->session->userdata('user_id')));
return $query->row();
}
}
我现在不知道这个问题是什么,所以任何帮助都会很棒。
答案 0 :(得分:34)
最有可能的是,userdata()
函数返回一个对象,而不是一个字符串。查看文档(或var_dump返回值)以找出您需要使用的值。
答案 1 :(得分:5)
我使用codeignator并收到错误:
类stdClass的对象无法转换为字符串。
这篇文章我得到了我的结果
我在我的模型部分中使用
$query = $this->db->get('user', 10);
return $query->result();
从这篇文章我用
$query = $this->db->get('user', 10);
return $query->row();
我解决了我的问题
答案 2 :(得分:3)
一般情况下摆脱
类stdClass的对象无法转换为字符串。
尝试使用echo '<pre>'; print_r($sql_query);
为我的SQL查询得到结果为
stdClass Object
(
[num_rows] => 1
[row] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
[rows] => Array
(
[0] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
)
)
为了访问,有不同的方法E.g。:num_rows,row,rows
echo $query2->row['option_id'];
将结果显示为 2
答案 3 :(得分:1)
你在另一条评论中提到你不期望你的get_userdata()函数返回一个stdClass对象?如果是这种情况,您应该注意该函数中的这一行:
return $query->row();
这里,CodeIgniter数据库对象“$ query”调用了row()方法,该方法返回一个stdClass。或者,您可以运行row_array(),它以数组形式返回相同的数据。
无论如何,我强烈怀疑这不是问题的根本原因。你能告诉我们更多细节吗?玩一些东西,让我们知道它是怎么回事。我们无法使用您的代码,因此很难准确说明发生了什么。
答案 4 :(得分:1)
试试这个
return $query->result_array();
答案 5 :(得分:1)
就像其他人说的,echo 命令不能自己打印对象。 因此,您可以考虑使用 print_r 来显示对象的内容。
所以,就你而言:
print_r($query);
答案 6 :(得分:0)
我一直在寻找一种获取数据的方法
所以我用了这个$data = $this->db->get('table_name')->result_array();
然后像在数组对象上操作一样获取我的数据。
$data[0]['field_name']
无需担心类型转换或任何直接的问题。
所以对我有用。