Why does Pdo not recognize id?

Asked

Viewed 73 times

0

I’m having a very strange problem. See this message:

PHP Fatal error: Uncaught Exception 'Pdoexception' with message 'SQLSTATE[23000]: Integrity Constraint Violation: 1048 Column 'idUsuario' cannot 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();

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 its parameter, forcing it to always be an integer value.

  • 1

    I’m not using windows, yes Mac.

  • Look here, In OSX there are some issues that should be considered, the HFS file system supports both upper and lower case and lower case field names (though not at the same time), it depends on how it was preconfigured in formatting.

  • Dude, does it make a difference? Like putting a capital letter in the middle of the lower case?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.