Ir ao conteúdo
  • Cadastre-se
Stifler874

PHP Query nao esta executando...

Posts recomendados

Estou tentando fazer uma atualização em meu BD conforme o status da compra no mercado pago for aceita, porém pelo visto não esta executando a query alguém poderia ajudar ?

 

functions.php

 

<?php
    function addpayment($conexaoo, $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference){
        $sql = $conexaoo->prepare("INSERT INTO website_shop_compras (nick, email, ipcadastrado, nome, sobrenome, email_comprado, produto, valor, data, telefone, ipcomprando, observacoes, comando, status, servidor, preference_id, external_reference) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $sql->bind_param("sssssssssssssssss", $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference);
        $sql->execute();

        echo $sql->error;

        if($sql->affected_rows > 0){
            return true;
        }else{
            return false;
        }
    }

    function getPayment($conexaoo, $external_reference, $nick){
        $ext_ref = $external_reference;
        $query = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`external_reference` = '$ext_ref' AND status = 'Pendente'");//Aparentemente nao esta funcionando
        $total = $query->num_rows;//Aparentemente nao esta funcionando

        if($total > 0){
            echo "Tem pagamento<br>";
            updateStatus($conexaoo, $external_reference);
            //addSaldo($conexaoo, $nick);
        }
    }

    function addSaldo($conexaoo, $nick){
        $nick;
        $qr = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`nick` = '$nick'");
        $total = $qr->num_rows;


        if($total > 0){
            $dados = $qr->fetch_assoc();
            $saldo = $dados['funds'];
            $newStatus = 'Confirmado';
            $query = $conexaoo->prepare("UPDATE website_shop_compras SET status = ?");
            $query->bind_param("s", $newStatus);
            $query->execute();

            if($query->affected_rows > 0){
                echo "<br>Status atualizado...";
            }else{
                echo $query->error;
            }
        }
    }

    function updateStatus($conexaoo, $external_reference){
        $sql = $conexaoo->prepare("UPDATE website_shop_compras SET status = 'Confirmado' WHERE external_reference = ?");
        $sql->bind_param("s", $external_reference);
        $sql->execute();

        if($sql->affected_rows > 0){
            echo "<br>Status atualizado como Confirmado.";
        }
    }

?>

 

 

response.php

 

<?php
include_once("lib/includes.php");
//echo $_GET['id'];

// Brasil: https://www.mercadopago.com/mlb/ferramentas/aplicacoes

$mp = new MP(client_id, client_secret);
$params = ["access_token" => $mp->get_access_token()];
//echo $mp->get_access_token();
// Check mandatory parameters
if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
    http_response_code(400);
    return;
}
// Get the payment and the corresponding merchant_order reported by the IPN.
if($_GET["topic"] == 'payment'){
    $payment_info = $mp->get("/v1/payments/" . $_GET["id"]);
    $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["order"]["id"]);
// Get the merchant_order reported by the IPN.
} else if($_GET["topic"] == 'merchant_order'){
    $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"]);
}

//If the payment's transaction amount is equal (or bigger) than the merchant order's amount you can release your items 
if ($merchant_order_info["status"] == 200) {
    $transaction_amount_payments= 0;
    $transaction_amount_order = $merchant_order_info["response"]["total_amount"];
    $payments=$merchant_order_info["response"]["payments"];
    foreach ($payments as  $payment) {
        if($payment['status'] == 'approved'){
            $transaction_amount_payments += $payment['transaction_amount'];
        }    
    }
    if($transaction_amount_payments >= $transaction_amount_order){
        echo "release your items.<br>";
        $paymentInfo = $mp->get_payment ($_GET["id"]);
        //print_r ($paymentInfo);
        //echo $paymentInfo['response']['transaction_amount'];
        //echo $paymentInfo['response']['external_reference'];$paymentInfo['response']['collector_id'],
        $external_ref = $paymentInfo['response']['external_reference'];
        $ext_email = $paymentInfo['response']['payer']['email'];
        $ext_val = $paymentInfo['response']['transaction_amount'];
        getPayment($con, $external_ref, $ext_email, $ext_val);
    }
    else{
        echo "dont release your items";
    }
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tarde, olhando por cima acho que esta dando erro porque você colocou o nome do banco entre aspas simples, posso está enganado, mais não precisa dessas aspas!

E a concatenação parece que ta errado também.

 

errado 

$query = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`external_reference` = '$ext_ref' AND status = 'Pendente'");

correto.

$query = $conexaoo->query("SELECT * FROM website_shop_compras WHERE CONCAT(website_shop_compras,external_reference) = '$ext_ref' AND status = 'Pendente'");

obs.: não sei se é assim que faz a concatenação no SQL, alguém me orienta também por favor!  

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@JonathanCruz Na verdade, não é aspas simples(') e sim um acento grave(`), e não tem problema usar ele assim, é até recomendado colocar as chaves entre acento grave.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@GabrielSennaMs Eu acredito que seja as variaveis que estão passando no funcao "getPayment"

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Stifler874 Se possível mostra a class que está na variável $conexaoo.

 

Eu notei que você executa o query na primeira função, mas na outras você não faz isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@GabrielSennaMs

<?php
	$host = 'sql311y.com';
	$usuario = 'epiz_4508';
	$senha = 'Oz0TJGQ';
	$banco = 'epizhypecraft';


	$conexaoo = new mysqli($host, $usuario, $senha, $banco);


	if(mysqli_connect_errno()){
		exit('Erro ao conectar-se ao banco: '.mysqli_connect_error());
	}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, Stifler874 disse:

@GabrielSennaMs


<?php
	$host = 'sql311.epizy.com';
	$usuario = 'epiz_24204508';
	$senha = 'Oz0jt73NTJGQ';
	$banco = 'epiz_24204508_hypecraft';


	$conexaoo = new mysqli($host, $usuario, $senha, $banco);


	if(mysqli_connect_errno()){
		exit('Erro ao conectar-se ao banco: '.mysqli_connect_error());
	}
?>

 

Remove os dados de conexão 

adicionado 15 minutos depois

@Stifler874 Faz duas coisa se possível, ultiliza um var_dump(); na variável $query na função que você acha que está o problema, e verifica o log de erro.

 

Se possível pública o log de erro e o resultado do var_dump aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@GabrielSennaMs

Estou tentando refazer aqui pois peguei esse código de um colega...

Estou refazendo em PDO...

 

 

@edit;

Alterei tudo para PDO e ficou assim:

 

functions.php

 

 


<?php
    function adicionarDB($conexao, $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference){

            try {
                $stmt = $conexao->prepare("INSERT INTO website_shop_compras (nick, email, ipcadastrado, nome, sobrenome, email_comprado, produto, valor, data, telefone, ipcomprando, observacoes, comando, status, servidor, preference_id, external_reference) VALUES ('$nick', '$email', '$ipcadastrado', '$nome', '$sobrenome', '$email_comprado', '$produto', '$valor', '$data', '$telefone', '$ipcomprando', '$observacoes', '$comando', '$status', '$servidor', '$pref_id', '$external_reference')");
                $stmt->bindParam(1, $nick);
                $stmt->bindParam(2, $email);
                $stmt->bindParam(3, $ipcadastrado);
                $stmt->bindParam(4, $nome);
                $stmt->bindParam(5, $sobrenome);
                $stmt->bindParam(6, $email_comprado);
                $stmt->bindParam(7, $produto);
                $stmt->bindParam(8, $valor);
                $stmt->bindParam(9, $data);
                $stmt->bindParam(10, $telefone);
                $stmt->bindParam(11, $ipcomprando);
                $stmt->bindParam(12, $observacoes);
                $stmt->bindParam(13, $comando);
                $stmt->bindParam(14, $status);
                $stmt->bindParam(15, $servidor);
                $stmt->bindParam(16, $pref_id);
                $stmt->bindParam(17, $external_reference);

                if ($stmt->execute()) {
                    return true;
                } else {
                    return false;
                    print_r($stmt->errorInfo()); // exibe uma array com os erros
                }  

            } catch (Exception $e) {
                echo "<center><font size=6></font></center>";
            }

    }//Function

    function verificaPag($conexao, $external_ref){

        //


        $res = $conexao->prepare("SELECT COUNT(*) FROM website_shop_compras WHERE `external_reference` = '$external_ref' AND status = 'Pendente'");
        $res->execute();
        $num_rows = $res->fetchColumn();


        if ($num_rows > 0) {
            echo "Tem pagamento <br>";
            atualizaDB($conexao, $external_ref);
        }
    }

    function atualizaDB($conexao, $external_ref){

        try {
            $statusConfirm = "Confirmado";
            $stmt = $conexao->prepare("UPDATE website_shop_compras SET status = ? WHERE external_reference = '$external_ref'");
            $stmt->bindParam(1, $statusConfirm);

            if ($stmt->execute()) {
                echo "<br>Status atualizado como pago.";
            } else {
                echo "<br>Deu algum erro...";
                print_r($stmt->errorInfo()); // exibe uma array com os erros
            }  

        } catch (Exception $e) {
            echo "<center><font size=6></font></center>";
        }
    }

?>
 

 

 

response.php

 

 


<?php
include_once("lib/includes.php");
//echo $_GET['id'];

// Brasil: https://www.mercadopago.com/mlb/ferramentas/aplicacoes

$mp = new MP(client_id, client_secret);
$params = ["access_token" => $mp->get_access_token()];
//echo $mp->get_access_token();
// Check mandatory parameters
if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
    http_response_code(400);
    return;
}
// Get the payment and the corresponding merchant_order reported by the IPN.
if($_GET["topic"] == 'payment'){
    $payment_info = $mp->get("/v1/payments/" . $_GET["id"]);
    $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["order"]["id"]);
// Get the merchant_order reported by the IPN.
} else if($_GET["topic"] == 'merchant_order'){
    $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"]);
}

//If the payment's transaction amount is equal (or bigger) than the merchant order's amount you can release your items 
if ($merchant_order_info["status"] == 200) {
    $transaction_amount_payments= 0;
    $transaction_amount_order = $merchant_order_info["response"]["total_amount"];
    $payments=$merchant_order_info["response"]["payments"];
    foreach ($payments as  $payment) {
        if($payment['status'] == 'approved'){
            $transaction_amount_payments += $payment['transaction_amount'];
        }    
    }
    if($transaction_amount_payments >= $transaction_amount_order){
        echo "release your items.<br>";
        $paymentInfo = $mp->get_payment ($_GET["id"]);
        //print_r ($paymentInfo);
        //echo $paymentInfo['response']['transaction_amount'];
        //echo $paymentInfo['response']['external_reference'];$paymentInfo['response']['collector_id'],
        $external_ref = $paymentInfo['response']['external_reference'];
        $ext_email = $paymentInfo['response']['payer']['email'];
        $ext_val = $paymentInfo['response']['transaction_amount'];
        verificaPag($connection, $external_ref, $ext_email, $ext_val);
    }
    else{
        echo "dont release your items";
    }
}
?>
 

 

dbconnect.php

 

 


<?php

$_MYSQL = [
    'user' => '',//Usuario
    'pass' => '',//Senha
    'host' => '',//Host
    'data' => '',//DataBase
];

try
{
    $conexao = new PDO('mysql:dbname=' . $_MYSQL['data'] . ';host=' . $_MYSQL['host'], $_MYSQL['user'], $_MYSQL['pass'], [PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8']);
}
catch (PDOException $e)
{
    exit("ERRO!<br> " . $e->getMessage() . " ");
}
 
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!