获取刚刚插入的行的ID

时间:2012-03-06 17:52:09

标签: php mysql

假设我是通过php代码在MySql中的一个表中插入一行,而我的表有一个ID没有给出,但它是auto_increment - 我如何检索刚刚插入的行的ID? 我在php中的查询看起来像这样:

$query = "insert into " . $this->tabel . " values (false,";

在此之后,我使用在函数中作为参数给出的值填充查询。 但是,我需要使用当前ID更新我的php类的内部变量。我怎样才能获得它?

谢谢

public function insert ($keyValueSet) {

    $query = "insert into " . $this->tabel . " values (false,";
    $connection = new mysqli(ADDRESS, USERNAME, PASSWORD, DB);
    $cols = $this->getTableDesc();
    // $query construction ......
    $result = $connection->query($query);
    echo "ID: " . mysql_insert_id ();
    if ($result != 1)
        echo "Exception";
    $connection->close();
}

增量字段是第一个字段(我说:values(false)和MySql会自动增加此字段,正如我在数据库中看到的那样。

3 个答案:

答案 0 :(得分:2)

mysql_insert_id()

PHP Manual on MySql Insert ID

你能展示你用来插入的代码吗? PHP doc说如果前一个查询没有返回自动增量值,则返回0。这可能发生在两种情况下:

  • 您的上一次查询不是INSERT
  • 实际上,您的表格没有自动增量字段。

答案 1 :(得分:2)

默认为mysql_connect()

$id = mysql_insert_id();

对于程序性MySQLi,例如mysqli_connect()

$id = mysqli_insert_id();

对于面向对象的MySQLi,例如$db = new mysqli()

$id = $db->insertid; // replace $db with your DB variable name

答案 2 :(得分:1)

mysql_insert_id通常但如果您使用PDO,则PDO::lastInsertId