我尝试使用此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 = ????
答案 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*/