创建用于添加(和查看)数据库的PHP REST API

时间:2016-06-28 13:47:04

标签: php json ajax rest

我是REST API的新手。我一直在看教程等,但没有运气。

我需要使用表单将数据(和GET,没有表单)POST到数据库中,然后通过ajax将其发送到我的REST API以执行SQL。

一切都可能是错的,或者只是其中的一部分,我不知道(我使用了混合的教程)。

这是我的API(test / api / user_api.php)

$host       = " *** ";
$user       = "217129_xt71575";
$dbName     = "217129-test";
$password   = " *** ";

$link = mysqli_connect($host, $user, $password, $dbName);
mysqli_query($link, "SET NAMES utf8");
mysqli_query($link, "SET CHARACTER SET utf8");

$method     = $_SERVER['REQUEST_METHOD'];
$request    = explode('/', trim($_SERVER['PATH_INFO'], '/'));
$input      = json_decode(file_get_contents('php://input'), true);
$table      = preg_replace('/[^a-z0-9_]+/i', '', array_shift($request)); // I DON'T THINK THIS IS FOR ME?
$key        = array_shift($request)+0; // I DON'T THINK THIS IS FOR ME?
$columns    = array_keys($input);
$values     = array_values($input);

//$columns    = array('email', 'fname', 'lname'); // Used this to try
//$values     = array('j@example.com', 'jonna', 'hedlund'); // Used this to try

$set = '';
for ($i=0;$i<count($columns);$i++) {
    $set .= ($i > 0 ? ', ' : '' ). '' . $columns[$i] . ' = ?';
}

switch ($method) {
    case 'GET':
        show_users($link);
        break;
    case 'POST':
        insert_user($link, $set, $values);
}

function show_users($link) {
    $result = mysqli_query($link, "SELECT * FROM test_users");
    $rows   = array();

    while($row = mysqli_fetch_array($result)) {
        $rows[] = $row;
    }

    return json_encode($rows);
}

function insert_user($link, $set, $values) {
    $stmt = $link->prepare("INSERT INTO test_users SET $set");
    $stmt->bind_param("ssss", $values[0], $values[1], $values[2]);
    $stmt->execute() OR die();

        // THEN return something?
}

这是我的ajaxfile(test / app.js)

$(document).ready(function() {

    var form = document.getElementById("userform");

    $('.add_user').click(function(event) {
        event.preventDefault();

        var data = {};
        for(var i = 0, ii = form.length; i < ii; i++){
            var input = form[i];
            if(input.name) {
                data[input.name] = input.value;
            }
        }

        addUser(data);

    });

    function addUser(data) {

        var check = JSON.stringify(data);

        alert(check);

        $.ajax({
            type: "POST",
            url: "/api/user_api.php",
            data: JSON.stringify(data),
            contentType: "application, json; charset=utf-8",
            crossDomain: true,
            dataType: "json",
            success: function (data, status, jqXHR) { // I'm only used to using 'text' here..
                alert('success');
            },
            error: function (jqXHR, status) { // I'm only used to using 'text' here..
                console.log(jqXHR);
                alert('fail: ' + status.code);
            }
        });
    }

});

最后我的“形式”(test / index.php)

<form action="" id="userform">
    <input type="email" name="email" placeholder="email">
    <input type="text" name="fname" placeholder="fname">
    <input type="text" name="lname" placeholder="lname">
</form>
<button type="submit" name="submit" class="add_user">send</button>

我已经尽力理解这一切的逻辑,但没有运气,你有什么建议吗?对我来说真正新鲜的事情是REST API和使用JSON。

0 个答案:

没有答案