【问题标题】:Get the ID of a row that was just inserted获取刚刚插入的行的 ID
【发布时间】:2012-03-06 17:52:09
【问题描述】:

假设我通过 php 代码在 MySql 中的表中插入一行,并且我的表有一个未给出但它是 auto_increment 的 ID - 如何检索我刚刚插入的行的 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 会自动递增该字段,正如我在数据库中看到的那样。

【问题讨论】:

标签: php mysql


【解决方案1】:

对于默认的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

【讨论】:

  • 谢谢你......这正是你所指出的。我之前尝试使用 mysql,而之前我有 mysqli。
【解决方案2】:

mysql_insert_id()

PHP Manual on MySql Insert ID

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

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

【讨论】:

  • 它不起作用...它显示 ID=0,而在它插入 ID=14 的数据库中
【解决方案3】:

mysql_insert_id 通常情况下,但如果您使用的是 PDO,那么PDO::lastInsertId

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 2014-08-23
    • 2011-07-31
    • 2011-07-11
    • 2014-04-19
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多