Как заставить POST-запрос PHP правильно работать в CRUD API в качестве слоя для подключения к базе данных MySQL?

Я не могу отправить значения в базу данных через Postman.

Недавно я начал создавать CRUD API для практических целей. Я нашел несколько хороших руководств о том, как подключиться к базе данных с помощью PHP. Мне удалось собрать базу данных MySQL с помощью phpMyAdmin и подключить ее к PHP. Также запрос GET возвращает значения из базы данных: http://ivanzarkovic.com/movies/fetch_all_movies.php

В Postman я попытался добавить http://ivanzarkovic.com/movies/add_movie.php?movie_name=SomeName&genre=SF&year=2005&rating=4.6 или массово в форме JSON.

Хотя я ошибся с типом данных, поэтому я изменил тип в БД на строку (VARCHAR), но это не решило проблему.

if (isset($_POST['movie_name'])&&isset($_POST['genre'])&&isset($_POST['year'])&&isset($_POST['rating'])){
    $movieName = $_POST['movie_name'];
    $genre = $_POST['genre'];
    $year = $_POST['year'];
    $rating = $_POST['rating'];

    //Query to insert a movie
    $query = "INSERT INTO movies( movie_name, genre, year, rating) VALUES (?,?,?,?)";
    //Some code here
}else{
    //Mandatory parameters are missing
    $response["success"] = 0;
    $response["message"] = "missing mandatory parameters";
}

Я ожидаю зафиксировать новую запись в базе данных, но она привязана к «отсутствующим обязательным параметрам». isset($_POST['movie_name']) возвращает false.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
186
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предоставленный вами пример URL-адреса содержит данные в качестве параметров запроса. Это означает, что вы должны обращаться к $_GET, а не $_POST.

Ваш код подходит для приема данных по почте, можете ли вы поделиться запросом почтальона?

Пример:

if (isset($_GET['movie_name']) && isset($_GET['genre']) && isset($_GET['year']) && isset($_GET['rating'])) {
    $movieName = $_GET['movie_name'];
    $genre = $_GET['genre'];
    $year = $_GET['year'];
    $rating = $_GET['rating'];

    //Query to insert a movie
    $query = "INSERT INTO movies( movie_name, genre, year, rating) VALUES (?,?,?,?)";
    //Some code here
} else {
    //Mandatory parameters are missing
    $response["success"] = 0;
    $response["message"] = "missing mandatory parameters";
}

Поскольку я впервые использовал Postman, надеюсь, это то, что вы просите меня отправить. Для записи я выбрал POST в качестве метода, добавил пары ключ-значение и нажал кнопку «Отправить». Я полагаю, что ошибаюсь. POST /movies/add_movie.php?movie_name=some andsf&genre=sf&year=2005&rating=4.6 HTTP/1.1 Host: ivanzarkovic.com Cache-Control: no-cache Postman-Token: 545fb30d-1e92-5327-8717 -857b78164b7b Content-Type: multipart/form-data; граница=---- WebKitFormBoundary7MA4YWxkTrZu0gW

Ivan Z. 20.07.2019 11:27

Вы случайно не добавляете их в поле для параметров запроса, а не в тело сообщения?

atymic 20.07.2019 11:35

Вы были правы, я не отправил правильный POST-запрос. Я понятия не имел, почему это не работает, но мне удалось опубликовать данные в БД. Достаточно ли безопасен этот способ подключения к базе данных, если я добавлю только авторизацию входа с токеном?

Ivan Z. 20.07.2019 14:07

Другие вопросы по теме