Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Where子句与变量不匹配_Php_Mysql_Codeigniter - Fatal编程技术网

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:您能发布您的错误吗?