произошла ошибка при оценке синтаксиса тестового скрипта с ошибкой неожиданного токена? - PullRequest
0 голосов
/ 26 апреля 2018

Index.php

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

app->post('/createprovider', function () use ($app) {
    verifyRequiredParams(array('fullname', 'email', 'mobile', 'password','business_name', 'email_work', 'phone_work', 'address', 'latitude', 'longitude', 'category'));
    $response = array();
    $fullname = $app->request->post('fullname');
    $email = $app->request->post('email');
    $mobile = $app->request->post('mobile');
    $password = $app->request->post('password');
    $business_name = $app->request->post('business_name');
    $email_work = $app->request->post('email_work');
    $phone_work = $app->request->post('phone_work');
    $address = $app->request->post('address');
    $latitude = $app->request->post('latitude');
    $longitude = $app->request->post('longitude');
    $category = $app->request->post('category');
    $db = new DbOperation();
    $res = $db->createprovider($fullname, $email, $mobile, $password, $business_name, $email_work, $phone_work, $address, $latitude, $longitude, $category);
    if ($res == 0) {
        $response["error"] = false;
        $response["message"] = "You are successfully registered";
        echoResponse(201, $response);
    } else if ($res == 1) {
        $response["error"] = true;
        $response["message"] = "Oops! An error occurred while registereing";
        echoResponse(200, $response);
    } else if ($res == 2) {
        $response["error"] = true;
        $response["message"] = "Sorry, this student  already existed";
        echoResponse(200, $response);
    }
});

Это функция в dboperation.php

 public function createprovider($fullname,$email,$mobile,$pass,$business_name,$email_work,$phone_work,$address,$latitude,$longitude, $category){
        if (!$this->isProviderExists($email)) {
            $password = md5($pass);
            //$apikey = $this->generateApiKey();
            $stmt = $this->con->prepare("INSERT INTO nesbaty_provider(fullname, email, mobile, password, business_name, email_work, phone_work, address, latitude, longitude, category) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

            $stmt->bind_param("sssssssssss", $fullname, $email, $mobile, $password, $business_name, $email_work, $phone_work, $address, $latitude, $longitude, $category);

            $result = $stmt->execute();
            $stmt->close();
            if ($result) {
                return 0;
            } else {
                return 1;
            }
        } else {
            return 2;
        }
    }

1 Ответ

0 голосов
/ 07 мая 2018

Функция execute () PDO возвращает true в случае успеха и false в случае ошибки.

См. Функция Execute () PDO .

Вы вводите в заблуждение, отрицая это в своем операторе if внутри функции createprovider. Таким образом, у вас в принципе есть противоречивые блоки if, в результате ваша общая логика нарушается, но ваш код нуждается в нескольких изменениях.

Это должно работать нормально:

$app->post(...
...
if ($res == 1) {
    $response["error"] = false;
    $response["message"] = "You are successfully registered";
    echoResponse(201, $response);
} else if ($res == 0) {
    $response["error"] = true;
    $response["message"] = "Oops! An error occurred while registereing";
    echoResponse(200, $response);
} else if ($res == 2) {
    $response["error"] = true;
    $response["message"] = "Sorry, this student  already existed";
    echoResponse(200, $response);
}
...

Тогда внутри createprovider():

...
$stmt->close();
if ($result) {
    return 1;
} else {
    return 0;
}
...

Также для более «RESTful» реализации не следует использовать код «2XX» для ошибок.

...