PHP-скрипт не получает данные

#php #postman #rest

#php #postman #отдых

Вопрос:

Я просматривал несколько php-кодов, пытаясь выяснить проблему с моим кодом, и почему он не будет получать данные из post ниже приведен мой php-код, может кто-нибудь сказать мне, что с ним

я пытаюсь отправить аудиоданные с именем аудиофайла через этот php-файл, php-скрипт должен получить аудиофайл, создать затем аудиообъект, а затем извлечь имя и звуковую часть из файла, но когда я отправляю данные для проверки через postman, я получаю сообщение об ошибке 400 в видея настроил его для указания ошибки, но я не понимаю, почему это происходит

 <?php

include_once '../../configration/database.php';
include_once '../../objects/sound.php';
// JWT TOKEN VALIDATION


$data = json_decode(file_get_contents("php://input"));

$database = new Database();
$conn     = $database->getConnection();

// CONTROL

 $sound = new Sound($conn);

// make sure data is not empty
    if (
        !is_null($data->$filename)
        amp;amp; !is_null($data->$extension)
        amp;amp; !is_null($data->$waveform)   )
    {
    
    $sound->filename                  = $data->filename;
    $sound->extension               = $data->extension;
    $sound->waveform           = $data->waveform; 
    
    // create the product
    if ($sound->create_new())
    {
        
        http_response_code(200);
    }
    else
    {
        
        http_response_code(503);
        
        echo json_encode(array(
            "message" => "Unable to create sound."
        ));
    }
}

else {
    
    http_response_code(400);
    echo json_encode(array(
        "message" => "Unable to create sound. Data is incomplete."
    ));
}



?>
 

the database.php файл выглядит следующим образом

 <?php
include_once 'GlobalConfig.php';

class Database
{

    public $conn;

    public function getConnection(){
        $config= new GlobalConfig();
        $this->conn = null;

        try{
            $dsn = "mysql:host={$config->host};port={$config->port};dbname={$config->db_name};charset=utf8";

            $this->conn = new PDO($dsn, $config->username, $config->password);
            $this->conn->exec("set names utf8");
        }catch(PDOException $exception){
            echo "Connection error: " . $exception->getMessage();
        }

        return $this->conn;
    }

    public function getConnectionAndValidate($data){

        $this->conn = null;
        $config= new GlobalConfig();

        try{
            $dsn = "mysql:host={$config->host};port={$config->port};dbname={$config->db_name};charset=utf8";

            $this->conn = new PDO($dsn, $config->username, $config->password);
            $this->conn->exec("set names utf8");
            }catch(PDOException $exception){
            echo "Connection error: " . $exception->getMessage();
        }

        if (!validateToken($data->JWT, $data->UserID, $this->conn)){
          http_response_code(401);
        echo "Authorization: declined";
          exit();
        }

        return $this->conn;
    }

}
 

THE sound.php ФАЙЛ ВЫГЛЯДИТ СЛЕДУЮЩИМ ОБРАЗОМ

 <?php
class Sound
{
    
    private $conn;
    private $table_name = "";
    public $filename;
    public $extension;
    public $waveform;
    public $path;
 
 
    public function __construct($db)
    {
        $this->conn = $db;
    }   

    function create_new()
    {
        
        $this->path = $this->filename .".". $this->extension;
       
            $myfile = fopen($this->path, "w") or die("Unable to open file!");
             
            fwrite($myfile, $this->waveform);
             
            
            fclose($myfile);
        

        // $query = " INSERT INTO `tbl_address` 
        // (`contact_number`,`UserID` ,`billing_street_address`, `billing_city_address`, `billing_state_address`, `billing_country_address`, `billing_zip`,
        //  `shipping_street_address`, `shipping_city_address`, `shipping_state_address`, `shipping_country_address`, `shipping_zip`) 

        // VALUES (:contact_number,'$this->user_id', :billing_street_address, :billing_city_address, :billing_state_address, :billing_country_address, :billing_zip, 
        // :shipping_street_address, :shipping_city_address, :shipping_state_address, :shipping_country_address, :shipping_zip);";
        
        // $stmt                           = $this->conn->prepare($query);
        // $this->contact_number           = htmlspecialchars(strip_tags($this->contact_number));
        // $this->billing_street_address   = htmlspecialchars(strip_tags($this->billing_street_address));
        // $this->billing_city_address     = htmlspecialchars(strip_tags($this->billing_city_address));
        // $this->billing_state_address    = htmlspecialchars(strip_tags($this->billing_state_address));
        // $this->billing_country_address  = htmlspecialchars(strip_tags($this->billing_country_address));
        // $this->billing_zip              = htmlspecialchars(strip_tags($this->billing_zip));
        // $this->shipping_street_address  = htmlspecialchars(strip_tags($this->shipping_street_address));
        // $this->shipping_city_address    = htmlspecialchars(strip_tags($this->shipping_city_address));
        // $this->shipping_state_address   = htmlspecialchars(strip_tags($this->shipping_state_address));
        // $this->shipping_country_address = htmlspecialchars(strip_tags($this->shipping_country_address));
        // $this->shipping_zip             = htmlspecialchars(strip_tags($this->shipping_zip));
        
        // // bind values
        // $stmt->bindParam(":contact_number", $this->contact_number);
        // $stmt->bindParam(":billing_street_address", $this->billing_street_address);
        // $stmt->bindParam(":billing_city_address", $this->billing_city_address);
        // $stmt->bindParam(":billing_state_address", $this->billing_state_address);
        // $stmt->bindParam(":billing_country_address", $this->billing_country_address);
        // $stmt->bindParam(":billing_zip", $this->billing_zip);
        // $stmt->bindParam(":shipping_street_address", $this->shipping_street_address);
        // $stmt->bindParam(":shipping_city_address", $this->shipping_city_address);
        // $stmt->bindParam(":shipping_state_address", $this->shipping_state_address);
        // $stmt->bindParam(":shipping_country_address", $this->shipping_country_address);
        // $stmt->bindParam(":shipping_zip", $this->shipping_zip);
        
        // if ($stmt->execute()) {
        //         $this->address_id = $this->conn->lastInsertId();
        // } 
        // else {
        //     echo json_encode(array("message" => "Unable to get address."));                        
        // }



    }

   
    
}
?>
 

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

1. Это прекрасное время для вас, чтобы начать учиться отладке. Поиск в Google для чего-то вроде «как отлаживать PHP» поможет вам начать. Если вы используете IDE, у него, вероятно, есть полезные инструменты отладки. Даже если это не так, вы все равно можете выполнить некоторую базовую отладку, выводя значения ключей по всему коду, запуская его и наблюдая за выводом. Используйте этот процесс, чтобы сузить проблему. Если ваш код делает что-то, чего вы не ожидаете, то где-то в вашем коде определенная операция приводит к результату, которого вы не ожидали. Найдите эту операцию, определите значения в то время.

2. Ошибка, которую я получаю, выглядит следующим образом Ошибка подключения: SQLSTATE [HY000] [2006] Сервер MySQL исчез

3. В связи с комментарием @JohnConde я бы также посоветовал избегать try/catch на ранней стадии разработки, включить громкие исключения PDO и включить полное сообщение об ошибках PHP.