【问题标题】:Severity: 4096 Message: Object of class CI_DB_mysql_result could not be converted to string严重性:4096 消息:CI_DB_mysql_result 类的对象无法转换为字符串
【发布时间】:2014-05-29 08:36:53
【问题描述】:

我无法得到我的查询的字符串结果....我该如何解决?

型号:

class Get_info extends CI_Model {

  function Get_info() {
    parent::__construct(); 
    $this->load->database();

  }


  function getFirstName($email){
        $query_id=$this->db->query("SELECT user_id FROM user WHERE email='$email'");
        $query=$this->db->query("SELECT firstname FROM `user_info` WHERE id='$query_id'");
        var_dump($query->row());
        return $query->result();

  }
}

控制器:

$email = $this->input->post('email');
$this->load->model('get_info'); 
$result = $this->get_info->getFirstName($email);
$profile = $result[0];

$newdata = array(
        'email' =>  $email,
        'firstname' => $profile
        );
$this->load->library('session');
$this->session->set_userdata( $newdata );

当我在模型中调用 var_dump($query) 时,它会这样回答我:object(CI_DB_mysql_result)#23 (8) { ["conn_id"]=> resource(62) of type (mysql link persistent) ["result_id"]=> resource(91) of type (mysql result) ["result_array"]=> array(0) { } ["result_object"]=> array(0) { } ["custom_result_object"]=> array(0) { } ["current_row"]=> int(0) ["num_rows"]=> int(0) ["row_data"]=> NULL }

当我在控制器中调用 var_dump($profile) 时,它会回答我:array(0) { }

我的错误在哪里?我只想从查询中获取字符串文本并将其放在数据会话中..

【问题讨论】:

    标签: php mysql arrays codeigniter


    【解决方案1】:

    $query=$this->db->query("SELECT firstname FROMuser_infoWHERE id='$query_id'");

    这里$query_id是前面查询的结果,不在INT中。

    应该这样做,同时保护您的查询

    $query_id = $this->db->query("SELECT user_id FROM user WHERE email=?", array($email))->row();
    
    $query=$this->db->query("SELECT firstname FROM `user_info` WHERE id=?", array($query_id->user_id))->result();
    

    您也可以改用 AR,甚至可以进行一个独特的查询:

    return $this->db->select('user_info.firstname, user.email')
             ->from('user_info')
             ->join('user', 'user.user_id = user_info.id')
             ->where('user.email', $email)
             ->get()
             ->row();
    

    编辑上面的查询并将result() 更改为row(),因为您只查找一条​​记录。现在您的其他代码也必须更改:

    $result = $this->get_info->getFirstName($email);
    $newdata = array(
                 'email' =>  $result->email,
                 'firstname' => $result->firstname
               );
    

    【讨论】:

    • 它返回另一个错误:array(1) { [0]=> object(stdClass)#23 (1) { ["firstname"]=> string(3) "awq" } }致命错误:在第 16 行调用 S:\home\test1.ru\www\application\models\Get_info.php 中非对象的成员函数 result()
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多