我在最近的一个MacBook Pro上使用MySQL/PHP/Apache,其中包含了所有本地主机的请求。我已经找过了,但找不到解决问题的办法。
我的PHP脚本成功地将一个记录插入到一个基本主表中,该表的主键名为ID,是一个自动增量字段,但当我尝试使用LAST_INSERT_ID()或SQL_INSERT_ID()时,它无法捕获该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版本10.13.4
我认为自己是PHP/MySQL的高级初学者。任何帮助都将不胜感激。
发布于 2018-04-09 03:23:52
试一试
mysqli_insert_id($link);我认为您混淆了OOP和库的过程部分或其他什么。
因为如果我记得正确的话,sql_insert_id是从现在已经失效的mysql_*库中提取的。
https://stackoverflow.com/questions/49725065
复制相似问题