我对MySQL和PHP有一个非常奇怪的问题。
我有一个函数,下面的查询:
Global $Linker;
$query = "INSERT INTO ".$user_type." (id) VALUES (?)";
if($stmt = mysqli_prepare($Linker->DataBase,$query)) {
mysqli_stmt_bind_param($stmt,"i",$max_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
} printf("Error: %s.\n", mysqli_stmt_error($stmt));
其中
$Linker is the variable that holds the database connection
和
$user_type is the table I want to insert in the database
我收到以下错误
错误:无法添加或更新子行:外键约束失败(
std10179db/Students
,CONSTRAINTfk_Students_Users1
FOREIGN KEY(id
)REFERENCESmydb
。{{1 } {({1}})ON UPETE NO ACTION ON UPDATE NO ACTION)。
问题是,当我通过服务器中的命令行直接在MySQL中运行相同的查询时,它按预期工作,没有错误。
我找到了一个使用的工作:
Users
在我的PHP函数查询之前,另一种解决方法是更改我的数据库架构 但我想知道为什么会这样?
我甚至试图在没有参数的情况下执行查询:
Table_ID
与我直接放入服务器的那个完全相同但没有成功。
有什么想法吗?
编辑:
表USERS
$query= "SET FOREIGN_KEY_CHECKS=0";
$stmt = mysqli_prepare($Linker->DataBase,$query);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
和表学生
$query = "INSERT INTO Students (id) VALUES (3)";