mysqli_query无法正确处理

时间:2019-01-03 07:25:41

标签: php mysqli

我正在设置一个小的注册表单,该表单应该将数据插入到现有表中,返回唯一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;

感谢您的输入!

3 个答案:

答案 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中最有可能发布了一个。

相关问题