简体   繁体   中英

How to write REST web service in PHP for Android application backend?

Currently, I am developing an Android application with involves client server architecture. It is said to me that I have to write REST web service in PHP for back end communication. At that time I didn't know about RESTful architecture and etc..

In last 3 days, I learned much about REST web services and tried many tutorials. Then, I tried some code from tutorials and from SO. What I have tried so far is as follows:

I have three php files, a database named xyz and table named user_accounts with basic user details in phpmyadmin. And I have installed Advanced REST client on my browser. All code is in WWW directory of WAMP server under folder named my project . So, let me show some code:

1. db_connect.php

 <?php

            define("SERVER", '127.0.0.1');
            define("USER", 'root');
            define("PASSWORD", '');
            define("DB", 'xyz');


            $con = new mysqli(SERVER,USER,PASSWORD,DB);

            if ($con->connect_errno){
                die("Database Connection Failed");
                exit();

            }

In second file I have a function named adduser for adding user records into the database :
index.php :

    <?php
            require_once('db_connect.php');

           $response = array();

           $result = "";


           function adduser($firstname, $lastname, $email, $password) {


            global $app;

            $req = $app->request();

            $firstname= $req->params['firstname'];

            $lastname= $req->params['lastname'];

            $email = $req->params['email'];

             $password = $req->params['password'];


    $stmt = $con->prepare("INSERT INTO user_accounts (first_name,last_name,email,password)VALUES (?,?,?,?)");

                        $stmt->bind_param('ssss', $firstname, $lastname, $email, $password); 

                        $stmt->execute();

                        $result = $stmt->close();


        }

                if($result){

                          $response["success"] = 1;

                          $response["message"] = "account successfully created.";

                          echo json_encode($response);

                }

                else{

                     $response["success"] = 0;

                     $response["message"] = "An error occurred during registration.";

                     echo json_encode($response);
                 }



            ?>    

When I test it using advanced REST client by giving url :

http://127.0.0.1/my project/index.php/adduser

and method POST and parameters:

firstname=somename&lastname=name&email=a@b.gmail.com&password=101010

It shows following response:

{"success":0,"message":"An error occurred during registration."}

I can not identify where the error is. I am new to this. Please help if anything wrong.

your should try this:

$affected_rows = $stmt->rowCount();

Update:

then check if row count is greater than 0.

<?php
        require_once('db_connect.php');

       $response = array();

       $result = "";


function adduser($firstname, $lastname, $email, $password) {
    global $app;
    $req = $app->request();
    $firstname= $req->params['firstname'];
    $lastname= $req->params['lastname'];
    $email = $req->params['email'];
    $password = $req->params['password'];

    $stmt = $con->prepare("INSERT INTO user_accounts (first_name,last_name,email,password)VALUES (?,?,?,?)");

    $stmt->bind_param('ssss', $firstname, $lastname, $email, $password); 
    $stmt->execute();

    return $stmt->rowCount();
}

$adduser = addUser($firstname, $lastname, $email, $password);

if($adduser > 0){
    $response["success"] = 1;
    $response["message"] = "account successfully created.";

    echo json_encode($response);
} else{
    $response["success"] = 0;
    $response["message"] = "An error occurred during registration.";

    echo json_encode($response);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM