MySQL SQL_INSERT_ID() 和 LAST_INSERT_ID 不起作用

MySQL SQL_INSERT_ID() and LAST_INSERT_ID do not work

我在最近的 MacBook Pro 上使用 MySQL/PHP/Apache,所有请求都发送到本地主机。我已经搜索但找不到解决我的问题的方法。

我的 PHP 脚本成功地将一条记录插入到主键名为 ID 并且是一个自动递增字段的基本主 table 中,但它无法捕获该 ID 的值当我尝试使用 LAST_INSERT_ID() 或 SQL_INSERT_ID() 时,与另一个 INSERT 一起使用到不同的 table。第二个 table 所需的数据只需要该值和来自相同 HTML 表单的文本字段的内容。

毫无疑问,如果我在等号后面放置一个整数(作为测试),我的脚本将完美运行(即没有错误,并且脚本将所需数据完美地输入到第二个 table 中) .我已经尝试了 SQL_INSERT_ID() 和 LAST_INSERT_ID(),结果相同:全白屏幕。

没有外键约束或任何复杂的东西。此代码失败并且 returns 只是一个白屏:

$sql = "INSERT INTO Table1 
    (int1, str1, int2, int3, int4, int5) 
    VALUES (?, ?, ?, ?, ?, ?)";

if($stmt = mysqli_prepare($link, $sql)){
    mysqli_stmt_bind_param($stmt, "isiiii", 
        $param_int1, $param_str1, $param_int2, 
        $param_int3, $param_int4, $param_int5);
}

if(mysqli_stmt_execute($stmt)){
    $last_id = sql_insert_id();        // <--- problem statement
} else {
    echo "Something went wrong with the execution.";
}

但是当我使用一个整数代替有问题的函数时,代码完全按照我想要的方式工作:

if(mysqli_stmt_execute($stmt)){
    $last_id = 6;
} else {
    echo "Something went wrong with the execution.";
}

如果第一次插入成功,if(mysql_stmt_execute($stmt)) returns 为 true,因此在此之后立即初始化变量 $last_id 似乎是合乎逻辑的。这个可以吗?我还能在哪里查看我的代码?我需要在函数的括号内提供数据吗?

MySQL版本为5.7.21 Mac OS X 版本 10.13.4

我认为自己是 PHP/MySQL 的初学者。任何帮助将不胜感激。

尝试

mysqli_insert_id($link);

我认为您混淆了 OOP 和库的程序部分。

因为如果我没记错的话 sql_insert_id 来自现已不存在的 mysql_* 图书馆。

https://www.w3schools.com/php/func_mysqli_insert_id.asp