МЕТОД POST не работает, но не показывает никаких ошибок

#php #mysql #sql #mysqli

#php #mysql #sql #mysqli

Вопрос:

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

PHP — это мой интерфейс, а база данных MYSQL — это серверная часть.

Я уже создал таблицу в серверной части, и я проверил пользовательскую таблицу, но значения тоже не вставлены.

Испробованные методы:

Я вставил данные вручную, используя команду insert, и она работает нормально.

Вызов API

 http://localhost/test/register.php?phone=12345amp;name=Smithamp;birthdate=1974-12-01amp;address=7th Avenue
  

Ошибка:

 {"error_msg":"Required parameter (phone,name,birthdate,address) is missing!"}
  

Register.php

 <?php
require_once 'db_functions.php';
$db=new DB_Functions();
$response=array();
if(isset($_POST['phone']) amp;amp;
isset($_POST['name']) amp;amp;
isset($_POST['birthdate']) amp;amp;
isset($_POST['address']))

{
    $phone=$_POST['phone'];
    $name=$_POST['name'];
    $birthdate=$_POST['birthdate'];
    $address=$_POST['address'];

    if($db->checkExistsUser($phone))
    {
        $response["error_msg"]="User already exists with" .$phone;
        echo json_encode($response);
    }
    else
    {
       //Create new user
        $user=$db->registerNewUser($phone,$name,$birthdate,$address);

        if($user)
        {
            $response["phone"]=$user["Phone"];
            $response["name"]=$user["Name"];
            $response["birthdate"]=$user["Birthdate"];
            $response["address"]=$user["Address"];

            echo json_encode($response);
        }
        else
        {
            $response["error_msg"]="Unknown Error occurred in registration!";
            echo json_encode($response);
        }
    }

}
else
{
    $response["error_msg"]="Required parameter (phone,name,birthdate,address) is missing!";
    echo  json_encode($response);
}

?>
  

CheckUser.PHP

 <?php
require_once 'db_functions.php';
$db=new DB_Functions();
$response=array();
if(isset($_POST['phone']))
{
    $phone=$_POST['phone'];

    if($db->checkExistsUser($phone))
    {
        $response["exists"]=TRUE;
        echo json_encode($response);
    }
    else
    {
        $response["exists"]=FALSE;
        echo json_encode($response);
    }

}
else
{
    $response["error_msg"]="Required parameter (phone) is missing!";
    echo  json_encode($response);
}

?>
  

db_functions.php

 <?php


class DB_Functions
{
    private $conn;

    function __construct()
    {
        require_once  'db_connect.php';
        $db=new DB_Connect();
        $this->conn=$db->connect();
    }

    function __destruct()
    {
        // TODO: Implement __destruct() method.

    }

    /*
     * Check user exists
     * return true/false
     */

    function checkExistsUser($phone)
    {
        $stmt=$this->conn->prepare("select * from User where Phone=?");
        $stmt->bind_param("s",$phone);
        $stmt->execute();
        $stmt->store_result();

        if($stmt->num_rows > 0)
        {
            $stmt->close();
            return true;
        }

        else{
            $stmt->close();
            return false;
        }
    }


    /*
     * Register new user
     * return User Object if user was created
     * Return error mssage if have exception
     */


    public function registerNewUser($phone,$name,$birthdate,$address)
    {
        $stmt=$this->conn->prepare("INSERT INTO User(Phone,Name,Birthdate,Address) VALUES(?,?,?,?)");
        $stmt->bind_param("ssss",$phone,$name,$birthdate,$address);
        $result=$stmt->execute();
        $stmt->close();


        if($result)
        {
            $stmt=$this->$this->conn->prepare("SELECT * FROM User where Phone = ?");
            $stmt->bind_param("s",$phone);
            $stmt->execute();
            $user=$stmt->get_result()->fetch_assoc();
            $stmt->close();
            return $user;
        }

        else
        {
            return false;
        }

    }
}
  

db_connect.php

 <?php

class DB_Connect{

    private $conn;

    public function connect()

    {
        require_once 'config.php';
        $this->conn=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
        return $this->conn;
    }

}

?>
  

Имя, телефон, адрес и значение Dateofbirth необходимо вставить в базу данных MYSQL.

Комментарии:

1. Где ваша HTML-форма? Можете ли вы показать его нам тоже? Возможно, вы просто допустили опечатку или не указали правильный метод.

2. Как вы отправили запрос? можете ли вы добавить форму?

3. Замените все $_POST на $_GET при передаче параметров запроса

4. Что вы получите, если выполните vardump $_GET ?

5. Да, вы можете использовать POST на PHP, но в показанном вами URL API используются параметры GET.

Ответ №1:

Ваш URL-вызов — это метод GET, но вы запрашиваете переменные POST.

Таким образом, в основном ваш оператор if привел к false, отсюда и сообщение об ошибке. Измените их на GET .

 if(isset($_GET['phone']) amp;amp;
isset($_GET['name']) amp;amp;
isset($_GET['birthdate']) amp;amp;
isset($_GET['address']))
  

Тогда это должно сработать