Что я делаю не так с функцией ввода php: //? - PullRequest
3 голосов
/ 02 июля 2019

Моя текущая проблема заключается в том, что мне нужно создать внутренний API, подключенный к базе данных MySQL.Мой одноклассник нашел учебник о том, как его создать, но он использует что-то, с чем я не знаком, и я не могу найти много документации.

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

До сих пор я пробовал гуглить (без реальных результатов) и спрашивать моих учителей, но у них, похоже, нет никакого ответа, чтобы помочь мне.Из того, что я обнаружил, это что-то вроде строки JSON с точки зрения чтения / вывода.

Функция для удаления строки из базы данных, как вы можете видеть, она использует то, что кажется вызовом JSON API.(p.Categorie_ID)

  public function delete(){
        $query = "DELETE FROM categorie WHERE Categorie_ID= p.Categorie_ID";

        $stmt = $this->connection->prepare($query);

        $stmt->execute();

        return $stmt;
    }
$p  = array(
      "Object_ID" => $Object_ID,
      "Object_naam" => $Object_naam,
      "Object_merk" => $Object_merk,
      "Object_type" => $Object_type,
      "Object_status" => $Object_status,
      "Categorie_ID" => $Categorie_ID
    );
    array_push($Objects["body"], $p);
  }

Выше я разместил то, что я считаю переменной "p" в исходном блоке кода.

<br />
<b>Notice</b>:  Trying to get property of non-object in <b>C:\xampp\htdocs\PHP\PHP API_Categories\entities\Categories\delete.php</b> on line <b>21</b><br />
object(Categories)#3 (4) {
  ["connection":"Categories":private]=>
  object(PDO)#1 (0) {
  }
  ["table_name":"Categories":private]=>
  string(10) "Categories"
  ["Categorie_ID"]=>
  NULL
  ["Categorie_naam"]=>
  NULL
}
NULL
{"message": "category was deleted."}

Это то, что он выводиткогда я запускаю / открываю файл.Это действительно дает сообщение, когда это удалено;все же все данные возвращаются как NULL.Что я здесь пропускаю?

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

(Примечание: полный исходный код можно найти здесь, если вы хотите прочитать то, что я пытался сделать изначально: https://www.techiediaries.com/php-rest-api/)

1 Ответ

0 голосов
/ 03 июля 2019

Вы правильно читаете данные из php://input. Проблема с вашим запросом SQL. Чтобы передать параметр из массива $p, вам нужно вставить параметр в запрос и связать данные. Также вам необходимо отправить массив в качестве аргумента функции.

// this function takes in a parameter $p 
public function delete(string $Categorie_ID) {
    $query = "DELETE FROM categorie WHERE Categorie_ID = ?";
    $stmt = $this->connection->prepare($query);
    // Pass an element from $p to the execute function to replace the ? placeholder
    $stmt->execute([
        $Categorie_ID
    ]);

    // return $stmt; // there is nothing to return from delete action
}

Затем вы можете вызвать функцию следующим образом:

$yourObj->delete($p['Categorie_ID']); // pass the category from the array as an argument
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...