当我插入一行时,我的表的'id'字段自动增加。我想插入一行,然后获取ID。
我会像我说的那样做,但是有没有一种方法可以让我不用担心插入行和获取id之间的时间?
我知道我可以在数据库中查询与输入的信息相匹配的行,但是有很大的变化,会有重复,唯一的区别是id。
当我插入一行时,我的表的'id'字段自动增加。我想插入一行,然后获取ID。
我会像我说的那样做,但是有没有一种方法可以让我不用担心插入行和获取id之间的时间?
我知道我可以在数据库中查询与输入的信息相匹配的行,但是有很大的变化,会有重复,唯一的区别是id。
当前回答
正如@NaturalBornCamper所说,mysql_insert_id现在已弃用,不应该使用。现在可以选择使用PDO或mysqli。NaturalBornCamper在他的回答中解释了PDO,所以我将展示如何使用MySQLi (MySQL改进)使用mysqli_insert_id来做它。
// First, connect to your database with the usual info...
$db = new mysqli($hostname, $username, $password, $databaseName);
// Let's assume we have a table called 'people' which has a column
// called 'people_id' which is the PK and is auto-incremented...
$db->query("INSERT INTO people (people_name) VALUES ('Mr. X')");
// We've now entered in a new row, which has automatically been
// given a new people_id. We can get it simply with:
$lastInsertedPeopleId = $db->insert_id;
// OR
$lastInsertedPeopleId = mysqli_insert_id($db);
查看PHP文档以获得更多示例:http://php.net/manual/en/mysqli.insert-id.php
其他回答
另一个可能的答案是:
当您定义表时,它将具有列和数据。列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的部分,创建后获取,之前的答案都是正确的。
正如@NaturalBornCamper所说,mysql_insert_id现在已弃用,不应该使用。现在可以选择使用PDO或mysqli。NaturalBornCamper在他的回答中解释了PDO,所以我将展示如何使用MySQLi (MySQL改进)使用mysqli_insert_id来做它。
// First, connect to your database with the usual info...
$db = new mysqli($hostname, $username, $password, $databaseName);
// Let's assume we have a table called 'people' which has a column
// called 'people_id' which is the PK and is auto-incremented...
$db->query("INSERT INTO people (people_name) VALUES ('Mr. X')");
// We've now entered in a new row, which has automatically been
// given a new people_id. We can get it simply with:
$lastInsertedPeopleId = $db->insert_id;
// OR
$lastInsertedPeopleId = mysqli_insert_id($db);
查看PHP文档以获得更多示例:http://php.net/manual/en/mysqli.insert-id.php
至于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();
试试这个…这对我很管用!
$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);
}
我在上面的链接http://php.net/manual/en/function.mysql-insert-id.php中找到了答案
答案是:
mysql_query("INSERT INTO tablename (columnname) values ('$value')");
echo $Id=mysql_insert_id();