返回上次插入的自动增量id php

返回上次插入的自动增量id php,php,mysql,database,Php,Mysql,Database,我没有插入任何值,但自动记住了其中一列,如何获取最后插入的id值 我使用了echomysql\u insert\u id()但我给了我“0”,这似乎不正确。mysql\u insert\u id()仅在将数据插入表时才起作用 数据库 创建表MyGuests( id INT(6)无符号自动递增主键, firstname VARCHAR(30)不为空, lastname VARCHAR(30)不为空, 电邮VARCHAR(50), 注册日期时间戳 ) 上次插入的ID: 示例(MySQLi面向对象)

我没有插入任何值,但自动记住了其中一列,如何获取最后插入的id值

我使用了echo
mysql\u insert\u id()但我给了我“0”,这似乎不正确。

mysql\u insert\u id()仅在将数据插入表时才起作用

  • 数据库

    创建表MyGuests( id INT(6)无符号自动递增主键, firstname VARCHAR(30)不为空, lastname VARCHAR(30)不为空, 电邮VARCHAR(50), 注册日期时间戳 ) 上次插入的ID:


  • 示例(MySQLi面向对象)


  • 您能显示更多代码吗?顺便说一句,
    mysql.*
    函数已被弃用;改用PDO或MySQLi。我认为您误解了它返回的内容,如果您有一个自动递增的int列类型,并且您插入了一条新记录,您可以获取最后一个插入的id。但是,如果您正在更新某个列字段中的给定行,则它不会为您提供最后一个插入的id。最后一个id仅在
    插入后可用。递增一个值(即使用
    UPDATE
    )不会返回ID。ID也必须是主键。您可能可以使用max函数从该表中获取最大ID表单,即从表中选择max(ID)。它将仅返回主键字段的下一个值
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    
    if ($conn->query($sql) === TRUE) {
        $last_id = $conn->insert_id;
        echo "New record created successfully. Last inserted ID is: " . $last_id;
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    
    $conn->close();
    ?>
    
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    
    if (mysqli_query($conn, $sql)) {
        $last_id = mysqli_insert_id($conn);
        echo "New record created successfully. Last inserted ID is: " . $last_id;
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
    
    mysqli_close($conn);
    ?>
    
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO MyGuests (firstname, lastname, email)
        VALUES ('John', 'Doe', 'john@example.com')";
        // use exec() because no results are returned
        $conn->exec($sql);
        $last_id = $conn->lastInsertId();
        echo "New record created successfully. Last inserted ID is: " . $last_id;
        }
    catch(PDOException $e)
        {
        echo $sql . "<br>" . $e->getMessage();
        }
    
    $conn = null;
    ?>