我在最近的MacBook Pro上使用MySQL / PHP / Apache,并向localhost发出所有请求。我搜索过但无法找到解决问题的方法。
我的PHP脚本成功地将一条记录插入到一个基本主表中,该主表的主键名为ID,并且是一个自动增量字段,但当我在另一个表中使用另一个INSERT时,它无法捕获该ID的值尝试使用LAST_INSERT_ID()或SQL_INSERT_ID()。第二个表所需的数据只需要该值以及来自同一HTML表单的文本字段的内容。
如果我在等号之后放置一个整数(作为测试),我的脚本可以完美地工作(即没有错误,并且脚本完美地将所需数据输入到第二个表中),这是明白无误的。我尝试了SQL_INSERT_ID()和LAST_INSERT_ID(),结果相同:一个完全白屏。
没有外键约束或任何复杂的事情。此代码失败并返回一个白色屏幕:
$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))返回true,因此在此之后初始化变量$ last_id似乎是合乎逻辑的。这个可以吗?我还能在哪里看到我的代码?我是否需要在函数的括号内提供数据?
MySQL版本是5.7.21 Mac OS X版本10.13.4
我认为自己是PHP / MySQL的初学者。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试
mysqli_insert_id($link);
我认为你混淆了OOP和库的程序部分或其他东西。
因为如果我记得正确sql_insert_id
来自现已解散的mysql_*
库。