Codeigniter Active Record返回类型

Bla*_*ama 0 activerecord codeigniter

我尝试umat_id使用此SQL查询:

SELECT umat_id FROM msumat WHERE nama = $nama
Run Code Online (Sandbox Code Playgroud)

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

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
Run Code Online (Sandbox Code Playgroud)

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

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

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

我只想回应"约翰"

编辑 刚才说我想将"John"插入变量中.怎么做?

$john = ????
Run Code Online (Sandbox Code Playgroud)

Fab*_*nes 5

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

这个错误:

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

发生的原因是你试图回显一个物体.

这段代码

$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
Run Code Online (Sandbox Code Playgroud)

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

$results = $terdaftar->result();
Run Code Online (Sandbox Code Playgroud)

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

$results = $terdaftar->result_array();
Run Code Online (Sandbox Code Playgroud)

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

$number_results = $terdaftar->num_rows()
Run Code Online (Sandbox Code Playgroud)

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

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

$results = $terdaftar->result_array();
Run Code Online (Sandbox Code Playgroud)

现在你的变量$ 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'];

}
Run Code Online (Sandbox Code Playgroud)