美好的一天! 我有这个问题:
$name = $this->input->get_post('name');
$unit = $this->input->get_post('unit');
$user = $this->session->userdata('user');
$sql = $this->db->query("select ID from type WHERE code LIKE '%".$unit."%'");
$result = mysql_query($sql);
$this->db->set('Name', $name);
$this->db->set('Unit', $result);
$this->db->set('Owner', $user);
$this->db->set('CreatedBy', $user);
$this->db->set('ModifiedBy', $user);
$this->db->insert('prod');
$this->db->select('ID');
$this->db->from('type');
$this->db->where('%'.$unit.'% = type.code');
$id = $this->db->insert_id();
return (isset($id)) ? $id : FALSE;
当我在where子句中有条件时,我不知道为什么我不能从表Unit
设置值ID
的表type
有人可以帮助我吗?
答案 0 :(得分:1)
我不确定代码尝试完成的内容,但like()
不需要包含%。如果您致电like('type.code', '%1234%')
,则查询将WHERE type.code LIKE '%\%1234\%%'
。因此,您只需撰写$this->db->like('type.code', $unit);
如果您只希望在一方显示%,或者您想要明确,like()
会采用第三个参数,即'both'
,'before'
, 'after'
或'none'
指定插入%的位置。
这可能不是您唯一的错误:
$sql = $this->db->query("select ID from type WHERE code LIKE '%".$unit."%'");
$result = mysql_query($sql);
The documentation表示上述代码中的$sql
将是一个结果对象,并且在其上调用mysql_query()
会产生不可预测的结果。要获取实际的结果对象,您应该调用$sql->result()
(如果您希望获得多行)或仅$sql->row()
,因为您似乎只需要查找一行。
$this->db->set('Unit', $result);
在这里,您要使用$result->ID
(假设$result
是行而不是行数组)。将单位设置为$result
不起作用。要么将Unit设置为0,要么将$result
设为stdClass
对象而不是标量值的事实设置为其他一些无意的值。
希望有所帮助。
答案 1 :(得分:0)
将“type”表重命名为code_type,看看它是否有效。