PHP无法从JSON接收POST参数

我被困在这里。
 我的api没有收到我的发布参数,已经尝试了一些东西。
 评论行中的内容(我以前使用的方式)..
 $query->execute(['recado' => $recado,'email' => $email,'ajuda_tipo' => $ajuda_tipo,'ajuda_nome' => $ajuda_nome,'ajuda_qnt' => $ajuda_qnt,'total' => $total]);
 在同一个API中,我有一些get请求正像超级按钮一样工作。

代码:

<?php
header('access-control-allow-origin: *');
header('access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,accept');
header('access-Control-Allow-Methods: GET,POST,PUT');

$db = new PDO("mysql:host=localhost;dbname=XXXXXXXXXXXXX;charset=utf8","root","XXXXXXXXXX");

function safeInput($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);

  return $data;
}

$json = ['status' => 'fail'];

// Post Request

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $recado = safeInput($_POST['recado']);
  $email = safeInput($_POST['email']);
  $ajuda_tipo = safeInput($_POST['ajuda_tipo']);
  $ajuda_nome = safeInput($_POST['ajuda_nome']);
  $ajuda_qnt = safeInput($_POST['ajuda_qnt']);
  $total = safeInput($_POST['total']);

  if ($email) {
    $query = $db->prepare("INSERT INTO envios_2019 (id,recado,email,ajuda_tipo,ajuda_nome,ajuda_qnt,total) VALUES (null,:recado,:email,:ajuda_tipo,:ajuda_nome,:ajuda_qnt,:total");
    $query->bindParam('recado',$recado);
    $query->bindParam('email',$email);
    $query->bindParam('ajuda_tipo',$ajuda_tipo);
    $query->bindParam('ajuda_nome',$ajuda_tipo);
    $query->bindParam('ajuda_qnt',$ajuda_qnt);
    $query->bindParam('total',$total);
    $query->execute();
    // $query->execute(['recado' => $recado,'total' => $total]);
    if ($query->fetchColumn() >= 1) {
      $json['status'] = 'done';
      $json['envio'] = [
        'recado' => $recado,'total' => $total
      ];
    }
    else {
      $json['status'] = 'Erro na hora de enviar!';
    }
  }
  else {
    $json['status'] = 'fail';
  }
}

POST请求:

PHP无法从JSON接收POST参数

POST响应:

PHP无法从JSON接收POST参数

在这里我在代码中调用POST REQUEST,上面的事件是使用POST注入(Chrome的高级REST客户端)

doEnvio: function() {
      const Axios = require('axios');
      let vm = this
      var ajuda1 = ''
      var ajuda2 = ''
      var ajuda7 = ''
      vm.ajudas.forEach(function(res){
        ajuda1 = res.tipo + ' - ' + ajuda1
        ajuda2 = res.nome + ' - ' + ajuda2
        ajuda7 = res.qnt + ' - ' + ajuda7
      })
      const params = new URLSearchParams();
      params.append('recado',vm.envio.recado);
      params.append('email',vm.envio.email);
      params.append('ajuda_tipo',ajuda1);
      params.append('ajuda_nome',ajuda2);
      params.append('ajuda_qnt',ajuda7);
      params.append('total',vm.total);
      Axios({
        method: 'post',url: 'http://localhost/api/',data: params
      })
        .then (function(response){
          console.log(response)
        })
        .catch (function(err){
          console.log(err)
        })
    }

@edit 这是我的PHP代码,现在有了一些更改:

// Post Request

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $_POST = json_decode(file_get_contents("php://input"),true);
  $recado = safeInput($_POST['recado']);
  $email = safeInput($_POST['email']);
  $ajuda_tipo = safeInput($_POST['ajuda_tipo']);
  $ajuda_nome = safeInput($_POST['ajuda_nome']);
  $ajuda_qnt = safeInput($_POST['ajuda_qnt']);
  $total = safeInput($_POST['total']);
  if ($email) {
    // VERIFYING
    echo "Email:" . $email . "\n";
    echo "Recado:" . $recado . "\n";
    echo "ajuda_tipo:" . $ajuda_tipo . "\n";
    echo "ajuda_nome:" . $ajuda_nome . "\n";
    echo "ajuda_qnt:" . $ajuda_qnt . "\n";
    echo "total:" . $total . "\n";
    //
    $query = $db->prepare("INSERT INTO envios_2019 (recado,total) VALUES (:recado,:total");
    $query->bindParam(':recado',$recado);
    $query->bindParam(':email',$email);
    $query->bindParam(':ajuda_tipo',$ajuda_tipo);
    $query->bindParam(':ajuda_nome',$ajuda_tipo);
    $query->bindParam(':ajuda_qnt',$ajuda_qnt);
    $query->bindParam(':total','total' => $total
      ];
    }
    else {
      $json['status'] = 'Erro na hora de enviar!';
    }
  }
  else {
    $json['status'] = 'fail';
  }
}

现在这里是POST响应:(现在进入并验证,但是我认为它是mysql sintax错误,因为它返回了$query->fetchColumn() as 0而不是预期的1

PHP无法从JSON接收POST参数

abelchu 回答:PHP无法从JSON接收POST参数

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3162453.html

大家都在问