Enter data in the Mysql database received from a Json

1

I have the following problem, I have an app and by it send some data in the format Json, for the server, up to that blz, arrives in this good format: {"credenciador":"","evento":"16","inscrito":[{"id_inscrito":"13","data_credenciado":"2016-09-23 14:39:52"}],"atividade":"8"}

I have to get this data and add in the database (Mysql), the problem is that it will not work at all, if I take the 'INSERT' code the code works fine, but with the 'INSERT' error, I believe my sql is giving a null result for some reason, has anyone had this problem or have any idea what it might be? Here is the script where I treat the Json values:

<?php
    include('../admin/config.php');
    function processaCredenciamento($credenciamento){
        $credenciamento = json_decode($credenciamento);
        $credenciador = $credenciamento->credenciador;
        $evento = $credenciamento->evento;
        $inscritos = $credenciamento->inscrito;

        $inscritos = json_decode($inscritos);

        $queryinsert = "insert into credenciamento(credenciador, inscrito, evento, data_credenciamento, data_envio) values ";

        foreach ($inscritos as $inscrito) {
            $queryinsert = "(".$credenciador.",".$inscrito->id_inscrito.",".$evento.",".$inscrito->data_credenciado.",now()),";
        }
        $queryinsert = substr($queryinsert, 0, -1);

        $credenciamento = mysql_query($queryinsert);


    }

    if($_POST){
         echo '{"retorno":true}';
         processaCredenciamento($_POST['credenciamento']);
         $filename = "retorno_credenciamento.txt";
         file_put_contents($filename, $_POST['credenciamento']);
    }

FUNCTIONAL CODE:

<?php
    include('config.php');

if($_POST){
        $credenciamento = json_decode($_POST['credenciamento']);
        $credenciador = $credenciamento->credenciador;
        $evento = $credenciamento->evento;
        $atividade = $credenciamento->atividade;
        $inscritos = $credenciamento->inscrito;

        foreach ($inscritos as $in){
            $insert_cred = "INSERT INTO credenciamento (evento, atividade, inscrito, data_credenciameno, data_envio) VALUES (".$evento.", ".$atividade.", ".$in->id_inscrito.", '".$in->data_credenciado."', now())";
            $credenciamento = mysql_query($insert_cred, $conexao) or die (mysql_error());
        }

         echo '{"retorno":true}';
         $filename = "retorno_credenciamento.txt";
         file_put_contents($filename, $_POST['credenciamento']);
}

?>
    
asked by anonymous 26.09.2016 / 20:53

1 answer

1

When using decode, use true after JSON to transform into an array, I think it's more practical.

$inscrito = json_decode($inscritos,true);

Then when accessing content use $inscrito['id_inscrito'] , if you do not use true after decoding, access content using $inscrito->{'id_inscrito'} .

In case the modifications do not work, after mounting your query, before executing, print it and try to execute directly in the database to see the message you give, in this way you can keep trying to change the query until you find where the error is , this way you are sure that it is an error in mySql and not in PHP.

You can do for example: a die($queryinsert);

Edit: Change the variable declaration

    $credenciamento = json_decode($credenciamento,true);
    $credenciador = $credenciamento['credenciador'];
    $evento = $credenciamento['evento'];
    $inscritos = $credenciamento['inscrito'];

  // $inscritos = json_decode($inscritos); creio que está linha não será mais necessária
    
26.09.2016 / 21:26