类stdClass的对象无法转换为字符串

时间:2015-08-02 16:31:33

标签: php mysql sql arrays codeigniter

我正在使用此代码插入

$last_id = "SELECT max(id) as id from clients ";
    $client_id = $this->db->query($last_id)->row();
    $client_last = $client_id->id;
    $data = array();    
for($i=0; $i<count($res); $i++)
{
$data['user_id'] = $res[$i];
$data['client_id']=$client_last;
$this->db->insert("notifications", $data);
}

数组$res返回值user_ids,如下所示:

 Array
(
[0] => stdClass Object
    (
        [id] => 5
    )

[1] => stdClass Object
    (
        [id] => 6
    )

[2] => stdClass Object
    (
        [id] => 7
    )

)

变量$client_last会返回像590这样的单个值。

在这种情况下,我想在表通知中插入三行,在$res的每个值中插入$client_last数组的值和$res array的相同值。 但在这种情况下,我收到数据库错误说:

  

消息:类stdClass的对象无法转换为字符串

当我用$this->db->last_qery();打印上一个查询时 它显示了这样的东西

INSERT INTO `notifications` (`user_id`, `client_id`) VALUES (, '90')

说sql错误。

1 个答案:

答案 0 :(得分:4)

我认为你的问题就在这一行:

$data['user_id'] = $res[$i];

您应将其更改为:

  $data['user_id'] = $res[$i]->id;

因为id的值存储在数组$res

中的对象中

代码:

for($i=0; $i<count($res); $i++)
{
  $data['user_id'] = $res[$i]->id;
  $data['client_id'] = $client_last;
  $this->db->insert("notifications", $data);
}