【问题标题】:How to make PHP POST request work properly in CRUD API as layer for connecting to MySQL database?如何使 PHP POST 请求在 CRUD API 中作为连接 MySQL 数据库的层正常工作?
【发布时间】:2019-07-20 08:53:47
【问题描述】:

我无法通过 Postman 将值 POST 到数据库。

最近我开始为练习目的构建 CRUD api。我发现很少有关于如何使用 PHP 连接数据库的好教程。我设法使用 phpMyAdmin 构建 MySQL DB 并将其与 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 格式的批量。

虽然我在数据类型上犯了错误,所以我将 DB 中的类型更改为字符串 (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 rest api backend crud


    【解决方案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 主机:ivanzarkovic.com 缓存控制:无缓存 Postman-Token:545fb30d-1e92-5327-8717 -857b78164b7b 内容类型:multipart/form-data;边界=---- WebKitFormBoundary7MA4YWxkTrZu0gW
    • 您是否有机会将它们添加到查询参数的字段中,而不是帖子正文中?
    • 你说得对,我没有发送正确的 POST 请求。我不知道为什么它不工作,但我设法将数据发布到数据库。如果我只添加带有令牌的登录身份验证,这种连接数据库的方式是否足够安全?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2013-02-11
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多