Php Where子句与变量不匹配
你好! 我有一个疑问:Php Where子句与变量不匹配,php,mysql,codeigniter,Php,Mysql,Codeigniter,你好! 我有一个疑问: $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."%'"); $resul
$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子句中有一个条件时,我不能从表type
中将表Unit
的值设置为ID
有人能帮我吗?我不确定代码想要完成什么,但是
like()
不要求包含%。如果调用like('type.code','%1234%')
查询将具有WHERE type.code,如'%\%1234\%'
。所以你可以直接写$this->db->like('type.code',$unit)
如果希望%只在一侧,或者希望是显式的,like()
接受第三个参数,该参数可以是'both'
,'before'
,'before'
或'none'
来指定插入%的位置
这可能不是您唯一的错误:
$sql = $this->db->query("select ID from type WHERE code LIKE '%".$unit."%'");
$result = mysql_query($sql);
表示上述代码中的$sql
将是一个结果对象,对其调用mysql\u query()
将产生不可预测的结果。要获取实际的结果对象,您应该调用$sql->result()
(如果您希望获得多行),或者只调用$sql->row()
,因为您似乎只在查找一行
$this->db->set('Unit', $result);
在这里,您希望使用$result->ID
(假设$result
是行,而不是行数组)。将单位设置为$result
不起作用。它将Unit设置为0,或者由于$result
是一个stdClass
对象而不是标量值而产生的一些其他意外值
希望能有所帮助。将“type”表重命名为类似于code\u type的名称,看看它是否有效。什么框架?代码点火器?您的意思是将列
Unit
的值设置为type.code
,因为如果Unit
是一个表,那么您就完全搞错了。是的,codeigniter。当$outputunit等于表类型中列代码的值时,使用表类型中列ID的值设置单位。您可以选择它仍然不起作用的位置。我编辑了上面的代码,并将select查询放入变量中。但仍然不起作用。:(@user3326074:您能发布您的错误吗?