Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
CREATE TABLE `usuario` (
`cod_usuario` int(9) NOT NULL AUTO_INCREMENT,
`nom_usuario` varchar(200) NOT NULL,
PRIMARY KEY (`cod_usuario`)
);
$nom_usuario = null;
try{
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO usuario (nom_usuario) values(?)";
$stmt = $PDO->prepare($sql);
$stmt->execute(array($nom_usuario));
}catch(exception $e) {
echo $e->getMessage();
}
$PDO = null;
Quero que faça o insert somente se o campo $nom_usuario não for nulo, caso seja nulo lance uma exceção.
mas com a coluna definida como not null não tem como o PDO validar isso? não outra maneira sem fazer um if else ?
Depois do seu setAttribute, coloque isso:
$PDO->setAttribute( \PDO::ATTR_EMULATE_PREPARES, false );
E a exceção específica que o PDO joga é "PDOException" e não "exception".
Edit: Dá uma olhada aqui tb: http://stackoverflow.com/questions/13997655/php-mysql-pdo-sets-0-in-a-non-nullable-column-instead-of-raising-exception-when
E aqui: http://php.net/manual/pt_BR/pdo.setattribute.php
Abraços.
agora se eu pegar o valor $nom_usuario = $_POST['nom_usuario'], eu tenho que fazer uma verificação se o conteúdo for vazio eu passo pra null, isso não tem como o PDO verificar, no caso de for vazio consider null?
}else{
faz a inserção......
}