返回上次插入的自动增量id php
我没有插入任何值,但自动记住了其中一列,如何获取最后插入的id值 我使用了echo返回上次插入的自动增量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面向对象)
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;
?>