如何使用单个预准备语句获取刚刚插入的行的id?

时间:2015-08-03 16:54:50

标签: php mysql sql database mysqli

我按以下方式插入一行:

require("localhost_credentials.php");

$conn = new mysqli($db_servername, $db_username, $db_password, $db_name);
if($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}

$q_title = $fixed_title;
$q_tags = $_POST['tag_input'];
$q_mod = "n";
$q_t_create = date("m/d/Y @ G:i:s");
$q_t_modified = date("m/d/Y @ G:i:s");

$querystr  = "INSERT INTO mytable (title, tags, moderator, time_created, time_last_modified) ";
$querystr .= "VALUES (?, ?, ?, ?, ?);";

$statement = $conn->prepare($querystr);
$statement->bind_param("sssss", $q_title, $q_tags, $q_mod, $q_t_create, $q_t_modified);
$statement->execute();

我想获取刚刚插入的行的id,而不必进行第二次查询。我已经看到了一些方法可以在SO上做到这一点,但每次都有关于它应该和不应该做的方式的辩论,我有点困惑。

使用预准备语句,如何只使用一个查询获取新插入行的ID?

2 个答案:

答案 0 :(得分:1)

只要不执行多重插入,就可以使用

$conn->insert_id

当从该连接创建的语句执行INSERT查询时,它会自动填充。

答案 1 :(得分:0)

你可以使用这样的东西:

$last_id = $statement->insert_id($conn);

这将返回最后插入的行ID。