Can I make more than 1 insert using PDO?

0

I want to do more than 1 insert using PDO and a php file, can I? Example:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type,X-Prototype-Version,X-Requested-With');

date_default_timezone_set('America/Sao_Paulo');

include_once("conPDO.php");

$pdo = conectar();

$data = file_get_contents("php://input");
$data = json_decode($data);

$msg  = $data->msg;
$idUsuario  = $data->idUsuario;
$idCep  = $data->idCep;
$nome  = $data->nome;
$foto ='';

$qryEnd=$pdo->prepare("SELECT * FROM cep WHERE idCep=:idCep");
$qryEnd->bindValue("idCep", $idCep);
$qryEnd->execute();

while ($linha=$qryEnd->fetch(PDO::FETCH_ASSOC)) {
        $idCep  = $linha['idCep'];
        $uf = $linha['uf'];
        $cidade = utf8_encode($linha['cidade']);
        $bairro = utf8_encode($linha['bairro']);
        $logradouro = utf8_encode($linha['logradouro']);
}
$data = date('Y-m-d,H:m:s');

$diaEHora = explode(',', $data);
$data = $diaEHora[0];
$hora = $diaEHora[1];

$insereMsgLogra=$pdo->prepare("INSERT INTO avisosLogradouro (idAvisoLogradouro, idUsuario, estado, cidade, bairro, logradouro, msg, foto, data, hora) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$insereMsgLogra->bindValue(1, NULL); 
$insereMsgLogra->bindValue(2, $idUsuario); 
$insereMsgLogra->bindValue(3, $uf); 
$insereMsgLogra->bindValue(4, $cidade); 
$insereMsgLogra->bindValue(5, $bairro); 
$insereMsgLogra->bindValue(6, $logradouro); 
$insereMsgLogra->bindValue(7, $msg); 
$insereMsgLogra->bindValue(8, $foto);
$insereMsgLogra->bindValue(9, $data);
$insereMsgLogra->bindValue(10, $hora);
$insereMsgLogra->execute();

$insereMsgBairro=$pdo->prepare("INSERT INTO avisosBairro (idAvisoBairro, idUsuario, estado, cidade, bairro, msg, foto, data, hora) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
$insereMsgBairro->bindValue(1, NULL); 
$insereMsgBairro->bindValue(2, $idUsuario); 
$insereMsgBairro->bindValue(3, $uf); 
$insereMsgBairro->bindValue(4, $cidade); 
$insereMsgBairro->bindValue(5, $bairro); 
$insereMsgBairro->bindValue(6, $msg); 
$insereMsgBairro->bindValue(7, $foto);
$insereMsgBairro->bindValue(8, $data);
$insereMsgBairro->bindValue(9, $hora);
$insereMsgBairro->execute() or die(print_r($insereMsgBairro->errorInfo()); 
?>

Is it possible to do this? So I tried and only the first one worked.

In the php log shows this:

  

[01-Feb-2016 19:49:09 Europe / Berlin] PHP Deprecated: Automatically populating $ HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php: // input stream instead. in Unknown on line 0

    
asked by anonymous 01.02.2016 / 19:17

1 answer

1

Your while is ending before making any insert. This is where the code block for the insert is executed once.

 while ($linha=$qryEnd->fetch(PDO::FETCH_ASSOC)) {
/* ---------------------------------------------------------------------- *
    A cada loop o valor das variáveis é atualizado, mas não é utilizado.
 * ---------------------------------------------------------------------- */
     $idCep  = $linha['idCep'];
     $uf = $linha['uf'];
     $cidade = utf8_encode($linha['cidade']);
     $bairro = utf8_encode($linha['bairro']);
     $logradouro = utf8_encode($linha['logradouro']);
 }

/* Seus blocos de insert estão depois do WHILE */

$insereMsgLogra=$pdo->prepare("INSERT INTO avisosLogradouro (idAvisoLogradouro, idUsuario, estado, cidade, bairro, logradouro, msg, foto, data, hora) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$insereMsgLogra->bindValue(1, NULL); 
$insereMsgLogra->bindValue(2, $idUsuario); 
$insereMsgLogra->bindValue(3, $uf); 
$insereMsgLogra->bindValue(4, $cidade); 
...
$insereMsgLogra->execute();

I hope I have helped ...

    
12.02.2016 / 21:40