我试图将tinyint字段的值设置为1、2或3,但未设置它。我在mySQL上还很新,所以我可能在某个地方犯了一个错误,但我看不到它。
我调用了该函数,并且所有其他字段都已设置,但不是tinyint,一直显示为0。
$this->db->update('jobattachment', ['redline' => $tid], ['id' => $attachmentid], ['editing' => '2']);
我尝试删除2周围的引号,并设置一个变量并执行['editing'] => $ editingLevel,但没有任何效果。
更新代码:
public function update($table = '', $set = NULL, $where = NULL, $limit = NULL)
{
// Combine any cached components with the current statements
$this->_merge_cache();
if ($set !== NULL)
{
$this->set($set);
}
if ($this->_validate_update($table) === FALSE)
{
return FALSE;
}
if ($where !== NULL)
{
$this->where($where);
}
if ( ! empty($limit))
{
$this->limit($limit);
}
$sql = $this->_update($this->qb_from[0], $this->qb_set);
$this->_reset_write();
return $this->query($sql);
}
这是限制代码:
public function limit($value, $offset = 0)
{
is_null($value) OR $this->qb_limit = (int) $value;
empty($offset) OR $this->qb_offset = (int) $offset;
return $this;
}
答案 0 :(得分:0)
您的update()
函数采用4个参数,最后一个参数是可选的限制。调用它时,您要传递4个参数,但最后一个是数组(['editing' => '2']
)。我的猜测是$limit
应该是整数,因此您的代码可能会生成类似... LIMIT 5
的内容。
因此,传递参数的方式似乎有问题。
现在,这是通过传递给update()
的参数设置变量的方式:
$table = jobattachment
$set = ['redline' => $tid]
$where = ['id' => $attachmentid]
$limit = ['editing' => '2']
我的猜测是,所有后3个都应该在$set
中-您要传入3个列名,每个列名都需要保存一个新值。
同样,我们看不到您实际的set()
代码,但可能需要键/值对的数组。因此,您可以像这样调用update()
(经过重新格式化以使其清楚地表明您仅传递了2个参数,而之前传递的是4个)
$this->db->update('jobattachment', [
['redline' => $tid],
['id' => $attachmentid],
['editing' => '2']
]);
现在$set
是要保存的多维数据数组。