I'm stuck here..
My api isn't receiving my post params, already try some things.
What is in the commented line (a way that i used before)..
$query->execute(['recado' => $recado, 'email' => $email, 'ajuda_tipo' => $ajuda_tipo, 'ajuda_nome' => $ajuda_nome, 'ajuda_qnt' => $ajuda_qnt, 'total' => $total]);
In the same API i have some get requests that are working like a charm.
Code:
<?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, 'email' => $email, 'ajuda_tipo' => $ajuda_tipo, 'ajuda_nome' => $ajuda_nome, 'ajuda_qnt' => $ajuda_qnt, 'total' => $total]);
if ($query->fetchColumn() >= 1) {
$json['status'] = 'done';
$json['envio'] = [
'recado' => $recado,
'email' => $email,
'ajuda_tipo' => $ajuda_tipo,
'ajuda_nome' => $ajuda_nome,
'ajuda_qnt' => $ajuda_qnt,
'total' => $total
];
}
else {
$json['status'] = 'Erro na hora de enviar!';
}
}
else {
$json['status'] = 'fail';
}
}
The POST request:
Here's where do i call the POST REQUEST in my code, above events were using a POST Injection (Advanced REST Client for Chrome)
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 Here's my php code now with some few changes:
// 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, email, ajuda_tipo, ajuda_nome, ajuda_qnt, total) VALUES (: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, 'email' => $email, 'ajuda_tipo' => $ajuda_tipo, 'ajuda_nome' => $ajuda_nome, 'ajuda_qnt' => $ajuda_qnt, 'total' => $total]);
if ($query->fetchColumn() >= 1) {
$json['status'] = 'done';
$json['envio'] = [
'recado' => $recado,
'email' => $email,
'ajuda_tipo' => $ajuda_tipo,
'ajuda_nome' => $ajuda_nome,
'ajuda_qnt' => $ajuda_qnt,
'total' => $total
];
}
else {
$json['status'] = 'Erro na hora de enviar!';
}
}
else {
$json['status'] = 'fail';
}
}
And here the POST RESPONSE now: (now its entering and verifying, but i think its a mysql sintax error because its returning the $query->fetchColumn() as 0
not the expected 1
` and line 46 code is that -> ` $query->execute();` – Pablo Mariante Nov 05 '19 at 06:10