Dados enviados pelo App não são exclusos através PHP e MySQL(PhpMydmin)

Olá Experts!

Meu app envia dados para o web service em um dos processos, ele grava e exclui as informações contidas em uma tabela de banco de dados.
Na inserção tudo bem, esta executando perfeitamente, mas o código que faz a exclusão não executa os dados enviados pelo app.
Tentei com mysqli e com PDO, mas não esta funcionando em sua plenitude, tentei debugar

Em mysqli:
<?php

//Pegando id do usuario.
$token       = $_GET['token'];
$id_cadastro = $_GET['id'];
   
//Importando do banco de dados
require_once('connection.php');

//Criando o sql
$sql = "DELETE FROM token WHERE token='$token' and id='$id_cadastro' ";

//excluindo os valores no banco
if(mysqli_query($con, $sql)){
    echo 'Token excluido com sucesso';
} else {
    echo 'Não foi possivel excluir Token';
}

//fecha a conexao
mysqli_close($con);
?>

Em PDO:
<?php

//ini_set('display_errors', true);
//error_reporting(E_ALL);

//Pegando id do usuario.
$token       = $_POST['token'];
$id_cadastro = $_POST['id'];

//echo $_SERVER['REQUEST_METHOD'];

//Importando do banco de dados
//require_once('connection.php');
include 'connection.php';

//Criando o sql
$sql = "DELETE FROM `token` WHERE token='$token' AND id_cadastro='$id_cadastro'";

//Importando banco de dados
$pdo = new PDO('mysql:host=localhost;dbname=NomeBanco', 'Usuario', 'Senha');
$stmt = $pdo->prepare($sql);

if((!$stmt->execute(array($token))) AND (!$stmt->execute(array($id_cadastro)))){
    echo '<pre> erro: ';
    print_r($stmt->errorInfo());
    exit;
}//if

$temp_array = $stmt->fetchAll(PDO::FETCH_OBJ);

//excluindo os valores no banco
if($temp_array >= 1){
    echo 'Token excluido com sucesso';
} else {
    echo 'Não foi possivel excluir Token';
}

//fecha a conexao
$con=null;
?>

Enviando pelo Postman, ora exclui, ora não exclui, dependendo de onde é enviado:
No Headers:

No Body:

Obs: Confesso que não sei a diferença entre ambos ao em enviar. Mas o teste no Body exclui.

No Banco de Dados:
image

Poderiam por gentileza me ajudar e mostrar caso e onde estou errando?

Header = get
Body = Post

Quando vc exclui pelo header do postman, vc tem alguma mensagem de erro?

A primeira coisa é testar se estão chegando os dados antes de mexer com o banco…

<?php
echo 'POST';
var_dump($_POST);

echo 'GET';
var_dump($_GET);

echo 'REQUEST';
var_dump($_REQUEST);
exit;
...

O exit vai evitar ficar mexendo no banco até vc encontrar a falha…

Olá Rode!

Não dá erro executando com Headers, mesmo aparecendo a mensagem de excluído com sucesso nenhum efeito no banco de dados.

Rode, boa noite!

Coloquei as tags no código abaixo, as que você informou e obtive o seguinte resultado:

<?php

echo 'POST';
var_dump($_POST);

echo 'GET';
var_dump($_GET);

echo 'REQUEST';
var_dump($_REQUEST);
exit;

ini_set('display_errors', true);
error_reporting(E_ALL);

//Pegando id do usuario.
$token       = $_GET['token'];
$id_cadastro = $_GET['id'];

echo $token;
echo $id_cadastro;

echo $_SERVER['REQUEST_METHOD'];

//Importando do banco de dados
require_once('connection.php');
include 'connection.php';

//Criando o sql
$sql = "DELETE FROM `token` WHERE token= :token AND id_cadastro= :id_cadastro";

//Importando banco de dados
$pdo = new PDO('mysql:host=localhost;dbname=NomeDB', 'Usuario', 'Senha');
$stmt = $pdo->prepare($sql);

$stmt->bindParam(':token', $token, PDO::PARAM_INT);
$stmt->bindParam(':id_cadastro', $id_cadastro, PDO::PARAM_STR, 10);
$stmt->execute();

if((!$stmt->execute(array($token))) AND (!$stmt->execute(array($id_cadastro)))){
    echo '<pre> erro: ';
   print_r($stmt->errorInfo());
   exit;
}//if

   $temp_array = $stmt->fetchAll(PDO::FETCH_OBJ);

   //excluindo os valores no banco
   if($temp_array >= 1){
       echo 'Token excluido com sucesso';
    } else {
        echo 'Não foi possivel excluir Token';
}

//fecha a conexao
$con=null;
?>

Corrigindo: Header no seu caso como vc usa postman, imagino que deve envolver outras coisas (soap, rest etc), tente colocar os valores por body e veja o que retorna…

Outras formas de testar os headers enviados…

https://secure.php.net/manual/pt_BR/function.getallheaders.php

https://secure.php.net/manual/pt_BR/function.apache-response-headers.php

Dica: essas linhas:

ini_set('display_errors', true);
error_reporting(E_ALL);

Quando declaradas, devem ficar no começo do arquivo acima de qualquer outro comando:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
// todo o resto abaixo...

Assim vc consegue debugar melhor…

Olá Rode!

Com suas dicas o debug funcionou, segue o resultado, mas no banco de dados, nada mudou:

image

Qual tipo da coluna token na tabela, char ou varchar?

E qual tamanho do campo?

Por que estou perguntando isso? Há diferença no armazenamento de dados entre esses dois tipos, pra ter uma prova real da base, faça um select +/- assim:

select
    token, 
    concat(token, 'teste') as token_concatenado, 
    trim(token) as token_limpo 
from token where id_cadastro = 1;

Estou suspeitando que seu token está sendo guardado com espaços (isso talvez faça com que token = :token nunca funcione), fora isso sinceramente não vejo outra situação que cause essas exclusões “intermitentes”…

Rode, boa noite!

Também já suspeitei que fosse algum espaço antes de decidir postar esse dilema, segue os testes:

Estrutura da tabela:

Consulta realizada com:

select token, concat(token, 'teste') as token_concatenado, trim(token) as token_limpo 
    from token 
 where id_cadastro = 1;

Bom, sua tabela está bem estruturada, isso elimina hipótese de texto com espaço, sinto muito mas não tenho mais ideia para te ajudar, boa sorte!