我正在设置一个小的注册表单,该表单应该将数据插入到现有表中,返回唯一ID,然后将该值插入到辅助表中。
当前,我认为第一个查询未运行,因为返回的唯一ID为0。
我已经遍历了这小部分代码,该代码可用于我的所有其他开发,并且似乎无法弄清楚它在哪里阻塞。
mysqli_query ($db_conx, "INSERT INTO Users
(first_name, last_name, dob, email, user_type, company, start_date, end_date, create_timestamp, last_modify_timestamp, create_matricule, pwd_hash)
VALUES
('$first_name','$last_name','$dob','$email','$user_type','$company','$start_date','$end_date','$create_timestamp','$create_timestamp','$create_matricule','$password_hash')");
//Now select this user to retreive the matricule
$matricule = mysqli_insert_id($db_conx);
$sql2 ="INSERT INTO Permissions (matricule) VALUES ('$matricule')";
$query2 = mysqli_query($db_conx, $sql2);
if(!$query){
echo json_encode(['message'=>"Error : ". mysqli_error($db_conx), 'code'=>500]);
}
echo json_encode(['message'=>"Matricule ".$matricule." created", 'code'=>200]);
}
控制台返回以下内容:
Object { message: "Matricule 0 created", code: 200 }
javascript.js:125:13
success javascript.js:126:13
ReferenceError: matricule is not defined[Learn More]
因此,第二个表的创建工作正常,但第一个表却不能正常工作。
我的数据库配置如下:
CREATE TABLE `Users` (
`matricule` int(6) NOT NULL,
`first_name` varchar(35) NOT NULL,
`last_name` varchar(35) NOT NULL,
`dob` date NOT NULL,
`email` varchar(50) NOT NULL,
`user_type` varchar(3) NOT NULL,
`company` varchar(30) NOT NULL,
`start_date` date NOT NULL,
`end_date` date NOT NULL,
`pwd_hash` varchar(500) NOT NULL,
`pwd_reset_hash` varchar(100) NOT NULL,
`otp_token` varchar(6) NOT NULL,
`create_timestamp` datetime NOT NULL,
`create_matricule` varchar(7) NOT NULL,
`manager_matricule` varchar(7) NOT NULL,
`sq_1` varchar(2) NOT NULL,
`sa_1` varchar(50) NOT NULL,
`sq_2` varchar(2) NOT NULL,
`sa_2` varchar(50) NOT NULL,
`last_modify_timestamp` datetime NOT NULL,
`last_modify_matricule` varchar(7) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
感谢您的输入!
答案 0 :(得分:3)
我认为您拼错了一些变量名。
您正在获取$ query2:
$query2 = mysqli_query($db_conx, $sql2);
然后检查$ query:
if(!$query){
echo json_encode(['message'=>"Error : ". mysqli_error($db_conx), 'code'=>500]);
}
答案 1 :(得分:0)
首先,必须按如下所示进行引号。
$sql="INSERT INTO Users (first_name) VALUES ('".$first_name."')";
或者您可以使用准备好的语句
答案 2 :(得分:0)
您的数据库结构或未共享的JavaScript中最有可能发布了一个。