Возникли проблемы при попытке создать несколько пользователей для этого API?

#php #api #postman

Вопрос:

Я могу опубликовать создание одного пользователя через Postman, но у меня возникли проблемы с настройкой этого кода, чтобы я мог опубликовать создание нескольких пользователей. Я пытался создать цикл foreach, но не смог заставить его работать, поэтому я отказался от него. Если бы кто-нибудь мог, пожалуйста, помочь мне, я был бы очень благодарен.

Это код для createOne.php

 lt;?php header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json; charset=UTF-8"); header("Access-Control-Allow-Methods: POST"); header("Access-Control-Max-Age: 3600"); header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");  include_once '../config/database.php'; include_once '../class/users.php';  $database = new Database(); $db = $database-gt;getConnection();  $item = new users($db);  $data = json_decode(file_get_contents("php://input"));  $item-gt;user_id = $data-gt;user_id; $item-gt;user_name = $data-gt;user_name; $item-gt;age = $data-gt;age; $item-gt;birthday = date('YYYY-MM-DD'); $item-gt;gender = $data-gt;gender;  if($item-gt;createUser()){  echo 'User created successfully.'; } else{  echo 'User could not be created.'; } ?gt;  

И это то, что users.php

 lt;?php class users{   // Connection  private $conn;   // Table  private $db_table = "users";   // Columns  public $user_id;  public $user_name;  public $age;  public $birthday; public $gender;    // Db connection  public function __construct($db){  $this-gt;conn = $db;  }    // CREATE  public function createUser(){  $sqlQuery = "INSERT INTO  ". $this-gt;db_table ."  SET  user_id = :user_id,   user_name = :user_name,   age = :age,   birthday = :birthday,  gender = :gender";     $stmt = $this-gt;conn-gt;prepare($sqlQuery);   // sanitize  $this-gt;user_id=htmlspecialchars(strip_tags($this-gt;user_id));  $this-gt;user_name=htmlspecialchars(strip_tags($this-gt;user_name));  $this-gt;age=htmlspecialchars(strip_tags($this-gt;age));  $this-gt;birthday=htmlspecialchars(strip_tags($this-gt;birthday));  $this-gt;gender=htmlspecialchars(strip_tags($this-gt;gender));    // bind data  $stmt-gt;bindParam(":user_id", $this-gt;user_id);  $stmt-gt;bindParam(":user_name", $this-gt;user_name);  $stmt-gt;bindParam(":age", $this-gt;age);  $stmt-gt;bindParam(":birthday", $this-gt;birthday);  $stmt-gt;bindParam(":gender", $this-gt;gender);   if($stmt-gt;execute()){  return true;  }  return false;  }  } ?gt;    

Это то, что я пытался сделать в файле createOne:

 foreach ((array) $data as $key=gt;$value) {  $item-gt;user_id = $data-gt;user_id; $item-gt;user_name = $data-gt;user_name; $item-gt;age = $data-gt;age; $item-gt;birthday = date('YYYY-MM-DD'); $item-gt;gender = $data-gt;gender;  if($item-gt;createUser()){ echo 'User created successfully.'; }  else{ echo 'User could not be created.'; }  }  

И всякий раз, когда я пытаюсь опубликовать новых пользователей через Postman, я получаю это:

 "Notice: Trying to get property 'user_id' of non-object in ..." "Notice: Trying to get property 'user_name' of non-object in ..." "Notice: Trying to get property 'age' of non-object in ..." "Notice: Trying to get property 'birthday' of non-object in ..." "Notice: Trying to get property 'gender' of non-object in ..." "User could not be created"  

(Например: Когда я пытаюсь опубликовать 3 новых пользователя, я получаю ответ выше 3 раз из-за цикла)

Комментарии:

1. Это должен быть просто случай зацикливания. Что именно пошло не так, что вы пытались сделать?

2. @ADyson Привет, я обновил пост тем, что я пробовал, и ошибкой, которую я получаю в конце.

3. Какой JSON вы отправили в сценарий? Пожалуйста, покажите и это тоже

4. Добавьте строку error_log('data: ' . var_export($data, true)); перед вашим циклом. Запустите вызов API, затем проверьте журналы сервера, чтобы увидеть фактическую структуру данных.