将数据插入表中并立即选择行的ID号

时间:2016-07-30 09:04:29

标签: php mysql sql

我有一个名为'买家'的MYSQL表。我正在获取表单数据并将其插入到名为insert.php的页面中的表中。

现在,除了表单字段的列名,我在表中有一个自动增量ID列。我想要的是;一旦我将表单数据发送到表,我想执行一些SQL来获取我刚插入数据的行的ID号。

例如,我有SQL:

INSERT INTO Buyers (name, email, job) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[job]');

这将在“买方”表格中创建一行,其中包含表单字段“name”,“email”和“job”中的数据。

此行将包含由自动增量生成的ID号。

那么,我如何选择那个确切的身份证号码呢?有没有办法选择表中最近的行,因为那是包含我想要的ID号的行?

3 个答案:

答案 0 :(得分:3)

Mysqli mysqli_insert_id()

<?php
mysqli_query($con,"INSERT INTO Buyers (name, email, job) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[job]')");
$last_id = mysqli_insert_id($con); 
?>

PDO PDO::lastInsertId()

<?php
$stmt = $con->prepare("INSERT INTO Buyers (name, email, job) VALUES (?,?,?)");
$stmt->bind_param("sss", $_POST['name'], $_POST['email'], $_POST['job']);
$stmt->execute();
$last_id = $con->lastInsertId();
?>

假设$con为连接。

Mysql mysql_insert_id()

<?php
mysql_query("INSERT INTO Buyers (name, email, job) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[job]')");
$last_id = mysql_insert_id(); 
?>

NOTE: [The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead ]

答案 1 :(得分:0)

SELECT x.*
  FROM messages x
  JOIN 
      ( SELECT from_id, MAX(time_sent) time_sent GROUP BY from_id ) y
    ON y.from_id = x.from_id 
   AND y.time_sent = x.time_sent;

这个谜题的最后一部分留给读者练习。

答案 2 :(得分:0)

使用mysql_insert_id()来检索ID。更多详情 - http://php.net/manual/en/function.mysql-insert-id.php