我花了几个小时试图编写mysqli查询以在数据库中插入一个新行(带有主键ID),然后选择新行的ID。我目前的代码是:
<?php
include('connectionData.php');
$conn = mysqli_connect($server, $user, $pass, $dbname, $port)
or die('Connection error');
if(isset($_POST['submit'])) {
$pnum = $_POST['pnum'];
$phone_insert_text = "INSERT INTO `voterdatabase`.`phone` (`pnum`) VALUES (?)";
$phone_insert_query = $conn->prepare($phone_insert_text);
$phone_insert_query->bind_param('s', $pnum);
$phone_insert_query->execute();
$phone_select_text = "SELECT phone_id FROM voterdatabase.phone WHERE pnum=?";
$phone_select_query = $conn->prepare($phone_select_text);
$phone_select_query->bind_param('s', $pnum);
$phone_select_query->execute();
$phone_select_query->bind_result($phone_id);
echo $phone_id;
?>
$phone_insert_query
执行没有问题。但是$phone_select_query
似乎根本没有运行,因为echo $phone_id;
没有效果。这可能会发生什么?我可以直接在MySQLWorkbench中运行查询。
请注意,我之前尝试使用SELECT LAST_INSERT_ID();
在一个查询中执行此操作,但mysqli无法执行包含该查询的任何查询。
答案 0 :(得分:2)
请试试这个
$lastInsertID= mysqli_insert_id($conn);
答案 1 :(得分:0)
使用insert_id属性:
<?php
include('connectionData.php');
$conn = mysqli_connect($server, $user, $pass, $dbname, $port)
or die('Connection error');
if(isset($_POST['submit'])) {
$pnum = $_POST['pnum'];
$phone_insert_text = "INSERT INTO `voterdatabase`.`phone` (`pnum`) VALUES (?)";
$phone_insert_query = $conn->prepare($phone_insert_text);
$phone_insert_query->bind_param('s', $pnum);
$phone_insert_query->execute();
$phone_id = $conn->insert_id;
echo $phone_id;
?>
答案 2 :(得分:0)
如果您希望能够使用可用的函数来获取最后插入的ID,例如{{1}},那么您的表必须具有 AUTO_INCREMENT 列。如果没有,你将无法获得身份证。
此外,即使您拥有所需的列,也需要两次调用。为了解决这个问题,您可以做的就是创建一个存储过程来为您执行插入操作,并从过程中返回插入的id。