MySQL查询不';不能在php中工作,直接运行时也可以工作
我对MySQL和PHP有一个非常奇怪的问题 我已将以下查询转换为函数:MySQL查询不';不能在php中工作,直接运行时也可以工作,php,mysql,sql,Php,Mysql,Sql,我对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_exe
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
及
我打印了以下错误
错误:无法添加或更新子行:外键约束失败(std10179db/Students
,约束fk_Students\u Users1
foreign key(id
)REFERENCESmydb
Users(Table_id
)ON DELETE NO ACTION ON ON ON ON update NO ACTION)
问题是,当我通过服务器上的命令行在MySQL中直接运行同一个查询时,它可以正常工作,没有错误
我找到了一个解决方法,使用:
$query= "SET FOREIGN_KEY_CHECKS=0";
$stmt = mysqli_prepare($Linker->DataBase,$query);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
在PHP函数中进行查询之前,另一个解决方法是更改数据库模式
但我想知道为什么会这样
我甚至尝试在没有参数的情况下执行查询:
$query = "INSERT INTO Students (id) VALUES (3)";
与我直接放入服务器的完全相同,但没有成功
有什么想法吗
编辑:
表用户
CREATE TABLE `std10179db`.`Users` (
`ID` INT NOT NULL ,
`Username` VARCHAR(45) NOT NULL ,
`Password` VARCHAR(45) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`User_Class` VARCHAR(45) NOT NULL ,
`Table_ID` INT NOT NULL ,
PRIMARY KEY (`ID`) ,
UNIQUE INDEX `Username_UNIQUE` (`Username` ASC) ,
UNIQUE INDEX `Password_UNIQUE` (`Password` ASC) ,
UNIQUE INDEX `email_UNIQUE` (`email` ASC) )
ENGINE = InnoDB;
和餐桌上的学生
CREATE TABLE `std10179db`.`Students` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`Univ_ID` VARCHAR(45) NULL ,
`Name` VARCHAR(45) NULL ,
`Surname` VARCHAR(45) NULL ,
`Telephone` VARCHAR(45) NULL ,
`Semester` INT NULL ,
`Department_id` INT UNSIGNED NULL ,
PRIMARY KEY (`id`, `Department_id`) ,
UNIQUE INDEX `idStudents_UNIQUE` (`id` ASC) ,
INDEX `fk_Students_Department1` (`Department_id` ASC) ,
CONSTRAINT `fk_Students_Department1`
FOREIGN KEY (`Department_id` )
REFERENCES `mydb`.`Department` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Students_Users1`
FOREIGN KEY (`id` )
REFERENCES `mydb`.`Users` (`Table_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
你能给我们看看你的表结构和外键吗?。。。。而
$max\u id的值
$max\u id的值=3。请稍候,使用外键中涉及的两个表的数据库脚本编辑我的问题constraint@Blenikos首先,您的查询插入到用户(id)值(3)
将不起作用,因为有一些非空列,所以您需要如何为我知道的列传递一些数据!!!我改了。那里不是用户而是学生。我真的很抱歉!!!!
CREATE TABLE `std10179db`.`Students` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`Univ_ID` VARCHAR(45) NULL ,
`Name` VARCHAR(45) NULL ,
`Surname` VARCHAR(45) NULL ,
`Telephone` VARCHAR(45) NULL ,
`Semester` INT NULL ,
`Department_id` INT UNSIGNED NULL ,
PRIMARY KEY (`id`, `Department_id`) ,
UNIQUE INDEX `idStudents_UNIQUE` (`id` ASC) ,
INDEX `fk_Students_Department1` (`Department_id` ASC) ,
CONSTRAINT `fk_Students_Department1`
FOREIGN KEY (`Department_id` )
REFERENCES `mydb`.`Department` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Students_Users1`
FOREIGN KEY (`id` )
REFERENCES `mydb`.`Users` (`Table_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;