Why does pdo not recognize id?

0

I'm having a VERY strange problem. Look at this message:

  

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [23000]: Integrity constraint violation: 1048 Column' idUsuario 'can not be null' in /home/vigil982/public_html/php/enviaMsgLogra.php:46   Stack trace: # 0 /home/vigil982/public_html/php/enviaMsgLogra.php(46): PDOStatement-> execute ()

     

1 {main}

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

header('Content-Type: text/html; charset=utf-8');
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');

include_once("conPDO.php");

$pdo = conectar();

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

$msg = $data->mensagem;
$msg = utf8_decode($msg);
$idUsuario  = $data->idUsuario;
$idCep  = $data->idCep;
$nomeRemetente  = $data->nome;
$uf = $data->uf;
$cidade = $data->cidade;
$bairro = $data->bairro;
$logradouro = $data->logradouro;
$dia  = $data->dia;
$hora  = $data->hora;
$foto = '';

$cidade = utf8_decode($cidade);
$bairro = utf8_decode($bairro);
$logradouro = utf8_decode($logradouro);

$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, $dia);
$insereMsgLogra->bindValue(10, $hora);
$insereMsgLogra->execute();
//var_dump($idUsuario);
$idAvisoLogradouro = $pdo->lastInsertId();


$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, $dia);
$insereMsgBairro->bindValue(9, $hora);
$insereMsgBairro->execute();
//var_dump($idUsuario);
$idAvisoBairro = $pdo->lastInsertId();

$insereMsgCidade=$pdo->prepare("INSERT INTO avisosCidade (idAvisoCidade, idUsuario, estado, cidade, msg, foto, data, hora) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$insereMsgCidade->bindValue(1, NULL); 
$insereMsgCidade->bindValue(2, $idUsuario); 
$insereMsgCidade->bindValue(3, $uf); 
$insereMsgCidade->bindValue(4, $cidade); 
$insereMsgCidade->bindValue(5, $msg); 
$insereMsgCidade->bindValue(6, $foto);
$insereMsgCidade->bindValue(7, $dia);
$insereMsgCidade->bindValue(8, $hora);
$insereMsgCidade->execute(); // or die(print_r($pdo->errorInfo()));
//var_dump($idUsuario);
$idAvisoCidade = $pdo->lastInsertId();

$insereMsgEstado=$pdo->prepare("INSERT INTO avisosUF (idAvisoUf, idUsuario, estado, msg, foto, data, hora) VALUES (?, ?, ?, ?, ?, ?, ?)");
$insereMsgEstado->bindValue(1, NULL); 
$insereMsgEstado->bindValue(2, $idUsuario); 
$insereMsgEstado->bindValue(3, $uf); 
$insereMsgEstado->bindValue(4, $msg); 
$insereMsgEstado->bindValue(5, $foto);
$insereMsgEstado->bindValue(6, $dia);
$insereMsgEstado->bindValue(7, $hora);
$insereMsgEstado->execute();
//var_dump($idUsuario);
$idAvisoUf = $pdo->lastInsertId();
    
asked by anonymous 24.06.2016 / 18:37

1 answer

1

To solve the problem, you can do the following:

$insereMsgLogra->bindValue(2, (int) $idUsuario, PDO::PARAM_INT);

This will make a cast in your parameter, forcing it to always be an integer value.

    
24.06.2016 / 21:54