未设置Tinyint字段

时间:2019-02-03 09:18:10

标签: php mysql

我试图将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;
}

1 个答案:

答案 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是要保存的多维数据数组。