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.
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.
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
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
essaye ça
return $query->result_array();
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.
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.