我被困在这里。
我的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请求:
在这里我在代码中调用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