mysqli_query не обрабатывается правильно - PullRequest
0 голосов
/ 03 января 2019

Я настраиваю небольшую форму регистрации, которая должна вставлять данные в существующую таблицу, возвращать уникальный идентификатор и вставлять это значение во вторичную таблицу.

В настоящее время я предполагаю, что первый запрос не выполняется, потому что возвращен уникальный идентификатор 0. 0. 1003 *

Я просмотрел эту небольшую часть кода, которая работает на всех моих других разработках и, похоже, не может понять, где он блокируется.

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 голосов
/ 03 января 2019

Сначала вы должны сделать кавычки следующим образом.

$sql="INSERT INTO Users (first_name) VALUES ('".$first_name."')";

Или вы можете использовать подготовленные заявления

0 голосов
/ 06 января 2019

Скорее всего, есть ошибка в структуре вашей базы данных или JavaScript, которым вы не поделились.

0 голосов
/ 03 января 2019

Я думаю, что вы неправильно ввели имена переменных.

Вы получаете $ query2:

$query2 = mysqli_query($db_conx, $sql2);

, затем проверяет $ query:

if(!$query){
    echo json_encode(['message'=>"Error : ". mysqli_error($db_conx), 'code'=>500]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...