如何在存储过程后获得行的id

时间:2016-08-29 04:57:28

标签: php mysql mysqli

我刚刚执行了一个存储过程,它将航班信息插入到我的表中,我想在每次插入后获取id。但我无法找到其他适用于我的方法。我想得到auto_increment上的flight_id。

mysqli_query($conn,"CALL addschedule('$airlineID','$from','$to','$departDate','$arriveDate','$departTime','$arrivalTime','$price')");

$last_id = mysqli_insert_id($conn);
echo $last_id;

正在运行mysqli_insert_id只会返回0值,但我的上一次航班ID为3.有人能给我一个明确的解释吗?

1 个答案:

答案 0 :(得分:3)

  

mysqli_insert_id - 返回上次查询中使用的自动生成的ID

     

mysqli_insert_id()函数返回查询生成的ID,该查询在具有AUTO_INCREMENT属性的列的表上。如果最后一个查询不是INSERT或UPDATE语句,或者如果修改后的表没有具有AUTO_INCREMENT属性的列,则此函数将返回零。

因此,请检查您是否已将AUTO_INCREMENT属性设置为id字段。

如果您已将其设置为AUTO_INCREMENT。此示例代码可能对您有所帮助。

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");


$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);

/* In op's case
mysqli->query($conn,"CALL addschedule('$airlineID','$from','$to','$departDate','$arriveDate','$departTime','$arrivalTime','$price')");
*/

printf ("New Record has id %d.\n", $mysqli->insert_id);


/* close connection */
$mysqli->close();
?>

答案2

在你的SP中

INSERT INTO table VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000);
select LAST_INSERT_ID();

在你的PHP代码

$result=mysqli_query($conn,"CALL addschedule('$airlineID','$from','$to','$departDate','$arriveDate','$departTime','$arrivalTime','$price')");

echo "Last ID: ".$result;

这可能会使你的工作。

PS :我没有测试此代码。希望工作