web-dev-qa-db-fra.com

L'objet de la classe stdClass n'a pas pu être converti en chaîne

J'ai un problème avec PHP en ce moment, je reçois cette erreur,

Object of class stdClass could not be converted to string l'erreur se produit lorsque j'exécute cette partie de code sur mon 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);
}

La ligne dans laquelle l'erreur se produit est celle-ci,

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

Et cette ligne appelle cette fonction,

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

Je ne connais pas vraiment ce problème et toute aide serait donc très utile.

28
sea_1987

Très probablement, la fonction userdata() renvoie un objet, pas une chaîne. Regardez dans la documentation (ou var_dump la valeur de retour) pour savoir quelle valeur vous devez utiliser.

36
Pekka 웃

J'utilise codeignator et j'ai eu l'erreur:

L'objet de la classe stdClass n'a pas pu être converti en chaîne.

pour ce post je reçois mon résultat

J'utilise dans ma section modèle

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

et de ce post j'utilise

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

et j'ai résolu mon problème

6
roshan

En général se débarrasser de

L'objet de la classe stdClass n'a pas pu être converti en chaîne.

essayez d'utiliser echo '<pre>'; print_r($sql_query); pour ma requête SQL a obtenu le résultat comme

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
                )

        )

)

Pour y accéder, il existe différentes méthodes, par exemple: num_rows, row, rows

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

Donnera le résultat comme 2

3
Nishanth ॐ

essaye ça

return $query->result_array();
2
Roopchand

Vous avez mentionné dans un autre commentaire que vous ne pensiez pas que votre fonction get_userdata () renverrait un objet stdClass? Si tel est le cas, vous devriez vous occuper de cette ligne dans cette fonction:

return $query->row();

Ici, l'objet de base de données CodeIgniter "$ query" a sa méthode row () appelée qui renvoie un stdClass. Alternativement, vous pouvez exécuter row_array () qui renvoie les mêmes données sous forme de tableau.

Quoi qu'il en soit, je soupçonne fortement que ce n'est pas la cause première du problème. Pouvez-vous nous donner plus de détails, peut-être? Jouez avec certaines choses et laissez-nous savoir comment ça se passe. Nous ne pouvons pas jouer avec votre code, il est donc difficile de dire exactement ce qui se passe.

1
treeface

Ce que je cherchais, c'est un moyen de récupérer les données

donc j'ai utilisé cette $data = $this->db->get('table_name')->result_array();

et puis récupéré mes données comme vous opérez sur des objets de tableau.

$data[0]['field_name']

Pas besoin de s'inquiéter du transtypage ou de tout ce qui va droit au but.

Donc cela a fonctionné pour moi.

0
Vicky Salunkhe