Codeigniter Active Record返回类型

时间:2013-03-07 11:44:54

标签: codeigniter activerecord

我尝试使用此SQL查询获取umat_id

SELECT umat_id FROM msumat WHERE nama = $nama

我将此SQL查询转换为CI的Active Record:

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

所以这个查询应该返回一个字符串(例如:“John”)。

但是当我试图回应时我遇到了错误:  类CI_DB_mysql_result的对象无法转换为字符串

我尝试过这样的事情:echo (string)$terdaftar;,但它不起作用。

我想要的只是回应“约翰”

修改 刚说我想将“John”插入变量中。怎么做?

$john = ????

3 个答案:

答案 0 :(得分:5)

由于一些用户已经指出了解决方案,我只是解释了为什么你确实得到了这个错误,这样你就能更好地理解codeigniter给出的查询结果。

此错误:

  

但是当我试图回应它时我遇到了一个错误:类的对象   CI_DB_mysql_result无法转换为字符串

发生这种情况,因为你试图回显一个物体。

这段代码

$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

将返回一个对象,该对象将包含有关您已完成查询的信息。 使用此对象,您可以将结果(行)作为对象执行此操作:

$results = $terdaftar->result();

或者如果您对数组感觉更舒服,可以将结果(行)作为数组返回:

$results = $terdaftar->result_array();

您还可以获得执行此操作的结果数量:

$number_results = $terdaftar->num_rows()

这只是一个例子,你可以在这里阅读更多关于结果的内容 http://ellislab.com/codeigniter/user-guide/database/results.html

修改 更好的解释:假设我们使用result_array()函数以纯数组格式获取结果:

$results = $terdaftar->result_array();

现在你的变量$ results是一个数组,要遍历它并获得你想要的数据,你会做这样的事情:

foreach ($results as $key => $row) {
    //the row variable will have each row of your database returned by your query
    //so if you want to access a field from that row, 
    //let's say for example the name field. You would do something like this
    if($row['name']=='John')
        echo $row['name'];

}

答案 1 :(得分:1)

尝试:

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

foreach ($terdaftar->result() as $row)
{
    echo $row->umat_id;
}

阅读documentation了解更多信息。

答案 2 :(得分:1)

试试这个:

 $this->db->select('umat_id');
 $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
 $row = $terdaftar->row_array();
 $your_variable = $row['umat_id']; /*Here comes your john*/