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:
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…
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”…