获取最后一个插入ID返回null

时间:2016-03-12 17:42:03

标签: php mysql codeigniter codeigniter-3

我有主表ID的db表图像和自动增量。我正在使用ajax > controller > model添加新图片。

我的创建模型有方法create

  public function create($data = array())
    {
        $this->db->insert($this->_table, $data);

        return $this->db->insert_id();
    }

  public function getLastInserted() {
        return $this->db->insert_id();
  }

在控制器中我创建测试元数据以检查插入的最后一个id:

public function lastID()
{
   var_dump($this->photo->getLastInserted());
}



// int(0)

但是记录是在数据库中插入的。可能有什么问题?

3 个答案:

答案 0 :(得分:2)

来自官方文档: mysqli :: $ insert_id - 返回最后查询中使用的自动生成的ID

确保您没有进行任何其他查询 AFTER 您的create()方法。

我建议将最后插入的ID放入类变量中,以避免将来出现类似问题:

private $lastInsertId = null;

public function create($data = array())
{
    $this->db->insert($this->_table, $data);
    $this->lastInsertId = $this->db->insert_id();

    return $this->lastInsertId;
}

public function getLastInserted() {
    return $this->lastInsertId;
}

答案 1 :(得分:0)

dbconnection->lastInsertId() 仅在您的数据库连接变量(如

)上使用它时才有效
<xs:element name="Pickers">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="Picker" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:unique name="unique-prefix">
    <xs:selector xpath="st:Picker"/>
    <xs:field xpath="@prefix"/>
  </xs:unique>
</xs:element>

答案 2 :(得分:0)

您的create函数返回最后一个插入ID。要查看上一个插入ID,只需在控制器函数中使用此代码

public function lastID()
 {
  var_dump($this->photo->create('table_name',$data));
 }

照片模型功能

function create($tableName, $data)
 {
    $this->db->insert($tableName, $post);
    return $this->db->insert_id();
 }