【发布时间】:2013-06-20 22:05:12
【问题描述】:
我在 CI 中使用 sqlsrv 驱动程序 但是,当我使用 $this->db->insert_id() 时,它会返回一个数组
我在插入数据库后在控制器中执行此操作
错误号:42S22
[Microsoft][SQL Server Native Client 11.0][SQL Server]列名“数组”无效。
有人可以帮忙吗? 非常感谢
Model
function insert_message($data)
{
$this->db->insert('message', $data);
$last_id = $this->db->insert_id();
return $last_id;
}
Controller
$message = $this->Message->insert_message(
$data = array(
'admin_account_id' => $accountid,
'message_subject' => $subject,
'message_content' => $content,
'message_priority' => $priority,
'date_send' => $date_send,
'message_status' => $status,
'message_createddate' => date("Y-m-d H:i:s"),
'message_send_usergroup'=> $usergroup
);
);
Database driver (sqlsrv_driver.php)
function insert_id()
{
return $this->query('select @@IDENTITY as insert_id')->row('insert_id');
}
$data 不包括标识列。 这是我现在使用的代码,但我仍然从 $last_id 获取一个数组。
【问题讨论】:
-
数据库交互应该只发生在模型中。这也可能有助于解决您的问题,因为模型中的插入和调用函数 insert_id 之间可能会有更多查询。
-
我已将代码更改为在模型中,但我仍然得到一个数组
-
嗯,里面有什么? var_dump($last_id); - 你确定错误不是来自插入本身,你的描述有点模糊。 $data 长什么样子?
-
$data 是一个值数组。并将数据插入数据库
-
试试
var_dump($last_id);die();并向我们展示数组中的内容。