当我插入一行时,我的表的'id'字段自动增加。我想插入一行,然后获取ID。

我会像我说的那样做,但是有没有一种方法可以让我不用担心插入行和获取id之间的时间?

我知道我可以在数据库中查询与输入的信息相匹配的行,但是有很大的变化,会有重复,唯一的区别是id。


当前回答

另一个可能的答案是:

当您定义表时,它将具有列和数据。列id可以具有AUTO_INCREMENT属性。

通过这个方法,你不用担心id,它会自动生成。

例如(选自w3schools)

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

希望这对某些人有所帮助。

编辑:这只是定义如何生成自动ID的部分,创建后获取,之前的答案都是正确的。

其他回答

至于PHP的网站,mysql_insert_id现在已弃用,我们必须使用PDO或MySQLi(参见@Luke对MySQLi的回答)。要使用PDO做到这一点,请按照以下步骤进行:

$db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass');
$statement = $db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)');
$statement->execute([':name' => 'Bob', ':city' => 'Montreal']);

echo $db->lastInsertId();

MySQL函数LAST_INSERT_ID()所做的正是您所需要的:它检索在会话期间插入的id。因此,使用它是安全的,即使有其他进程(例如,其他人调用完全相同的脚本)将值插入到同一个表中。

PHP函数mysql_insert_id()的作用与使用mysql_query()调用SELECT LAST_INSERT_ID()相同。

试试这个…这对我很管用!

$sql = "INSERT INTO tablename (row_name) VALUES('$row_value')";
    if (mysqli_query($conn, $sql)) {
    $last_id = mysqli_insert_id($conn);
    $msg1 = "New record created successfully. Last inserted ID is: " . $last_id;
} else {
    $msg_error = "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

一个例子。

    $query_new = "INSERT INTO students(courseid, coursename) VALUES ('', ?)";
    $query_new = $databaseConnection->prepare($query_new);
    $query_new->bind_param('s', $_POST['coursename']);
    $query_new->execute();
    $course_id = $query_new->insert_id;
    $query_new->close();

代码行$course_id = $query_new->insert_id;将显示最后插入行的ID。 希望这能有所帮助。

试着这样做,你就能得到答案:

<?php
$con=mysqli_connect("localhost","root","","new");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO new values('nameuser','2015-09-12')");

// Print auto-generated id
echo "New record has id: " . mysqli_insert_id($con);

mysqli_close($con);
?>

看看下面的链接:

http://www.w3schools.com/php/func_mysqli_insert_id.asp

http://php.net/manual/en/function.mysql-insert-id.php

另外请注意,此扩展在PHP 5.5中已弃用,并在PHP 7.0中删除