Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询不';不能在php中工作,直接运行时也可以工作_Php_Mysql_Sql - Fatal编程技术网

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

我对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

我打印了以下错误

错误:无法添加或更新子行:外键约束失败(
std10179db/Students
,约束
fk_Students\u Users1
foreign key(
id
)REFERENCES
mydb
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;