Pergunta

Estou tendo um problema com o PHP no momento, estou recebendo esse erro,

Object of class stdClass could not be converted to string O erro ocorre quando eu executo esta parte do código no meu site,

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);
}

A linha em que o erro está ocorrendo é este,

$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));

E esta linha está chamando esta função,

   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();
        }
    }

Eu realmente não agora, agora, qual é esse problema, então qualquer ajuda seria ótima.

Foi útil?

Solução

Provavelmente o userdata() A função está retornando um objeto, não uma string. Observe a documentação (ou var_dump o valor de retorno) para descobrir qual valor você precisa usar.

Outras dicas

Eu uso o Codeignator e recebi o erro:

Objeto da classe Stdclass não pôde ser convertido em string.

Para este post, recebo meu resultado

Eu uso na minha seção modelo

$query = $this->db->get('user', 10);
        return $query->result();

E a partir deste post eu uso

$query = $this->db->get('user', 10);
        return $query->row();

E eu resolvi meu problema

Em geral para se livrar de

Objeto da classe Stdclass não pôde ser convertido em string.

tente usar echo '<pre>'; print_r($sql_query); Para minha consulta SQL, obteve o resultado como

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
                )

        )

)

Para acessar, existem diferentes métodos, por exemplo: num_rows, linha, linhas

echo $query2->row['option_id'];

Dará o resultado como 2

tente isso

return $query->result_array();

Você mencionou em outro comentário que não espera que sua função get_userdata () retorne um objeto Stdclass? Se for esse o caso, você deve cuidar dessa linha nessa função:

return $query->row();

Aqui, o objeto CodeIgniter Database "$ query" possui seu método row () chamado, que retorna um stdclass. Como alternativa, você pode executar row_array () que retorna os mesmos dados no formulário de matriz.

De qualquer forma, suspeito fortemente que essa não seja a causa raiz do problema. Você pode nos dar mais alguns detalhes, talvez? Brinque com algumas coisas e deixe -nos saber como é. Não podemos brincar com seu código, por isso é difícil dizer exatamente o que está acontecendo.

O que eu estava procurando é uma maneira de buscar os dados

Então eu usei isso $data = $this->db->get('table_name')->result_array();

e, em seguida, busquei meus dados exatamente como você opera em objetos de matriz.

$data[0]['field_name']

Não há necessidade de se preocupar com a fundição do tipo ou qualquer coisa diretamente direto.

Então funcionou para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top