我想做以下事情:
//set up insert....
$this->db->insert('property');
$id = $this->db->insert_id();
//some stuff
//set up get
$this->db->where('id', $id);
$id = $this->db->get();
这不起作用。看起来插入没有在get之前执行 - get返回零行。插入物(最终)起作用。有什么建议吗?
答案 0 :(得分:2)
你错过了一个论点 - insert()
需要两个:
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$this->db->insert('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
因此,您需要通过将数组或对象包含为第二个参数来为insert()
提供必要的数据。
修改强>
或者,您可以使用$this->db->set()
方法设置值,如Rocket's more comprehensive answer中所述,这也指出您在选择数据时需要指定一个表。
答案 1 :(得分:2)
您需要提供insert
一些要插入的数据。
使用set
方法:
$this->db->set('name', 'Eric');
$this->db->insert('property');
或将数组作为第二个参数传递:
$this->db->insert('property', array(
'name' => 'Eric'
));
因为,对于你的选择,你需要告诉它选择哪个表。
使用from
方法:
$this->db->from('property');
$this->db->where('id', $id);
$id = $this->db->get();
或将get
表作为参数传递:
$this->db->where('id', $id);
$id = $this->db->get('property');
另请注意,get()
返回查询对象。您需要使用->row
(或->result
)来获取数据。
$this->db->from('property');
$this->db->where('id', $id);
$query = $this->db->get();
$id = $query->row()->id;