Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WBS DIGITAL

erro ao criar function para cadastro em PDO

Recommended Posts

O meu sistema de conexão com o banco de dados funciona direitinho, porém, ao criar função para cadastro usando PDO, dá erro no servidor 500

 

O codigo que ta dando o erro é o seguinte:

require_once ('funcoes/function.php');
//BD::conn();
if(isset($_POST['cadastrar']));
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$sobrenome = filter_input(INPUT_POST, 'sobrenome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);

if(cadastrar($nome, $sobrenome, $email, $login, $senha)):
echo'cadastrou';
else:
echo'erro ao cadastrar';
endif;
endif;

ele está sendo colocando no topo da index, logo abaixo de:

<?php

session_start();
include_once "defines.php";
require_once('classes/BD.class.php');

e a função é a seguinte:

function.php

<?php
function cadastrar($nome, $sobrenome, $email, $login, $senha){
$pdo = mysql();

try{
$inserir = $pdo->prepare("INSERT INTO usuarios(nome, sobrenome, email, login, senha) VALUES (?,?,?,?,?)");
$inserir->bindValue(1, $nome);
$inserir->bindValue(2, $sobrenome);
$inserir->bindValue(3, $email);
$inserir->bindValue(4, $login);
$inserir->bindValue(5, $senha);
$inserir->execute();

if($inserir->rowCount() == 1):
return true;
else:
return false;
} catch (PDOException $erro){}
	echo "Erro ao listar".$erro->getMessage();

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro 500 é só um código genérico

Você precisa ver qual é a mensagem de erro

Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2. Se não aparecer na tela o erro, é possível que esteja sendo salvo em um arquivo de logs dentro do servidor

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro 500 é só um código genérico

Você precisa ver qual é a mensagem de erro

Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2. Se não aparecer na tela o erro, é possível que esteja sendo salvo em um arquivo de logs dentro do servidor

Usei o codigo:

ini_set('display_errors', true);
error_reporting(E_ALL);

e mesmo assim não me retornou nenhum erro, somente o erro no servidor 500

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se o require esta setando para o local correto.... veja se o script esta na mesma pasta que .. ou se você tem que subir uma pasta...

require_once ('funcoes/function.php');

Coloca isso dentro da function

global $mysql; //su---do que a variavelk $mysql e a tua conexão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa require está ok

o engraçado é q se eu tiro a require dá problema e se eu tiro o codigo de inserção tambem da problema, então nçao to sabendo localizar o erro.

Obs.: Iniciando em PDO, apanhando bastante ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se dá erro 500, pode ser erro do PHP ou pode ser erro do servidor web.

Tem que olhar os logs. Não adianta tentar adivinhar. Só vai dar trabalho e perda de tempo. Veja onde estão os logs e veja o que está lá

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se dá erro 500, pode ser erro do PHP ou pode ser erro do servidor web.

Tem que olhar os logs. Não adianta tentar adivinhar. Só vai dar trabalho e perda de tempo. Veja onde estão os logs e veja o que está lá

[04-Feb-2016 01:42:52 Europe/Berlin] PHP Notice: Undefined offset: 1 in E:\sites\proig.com.br\classes\BD.class.php on line 18
[04-Feb-2016 01:42:52 Europe/Berlin] PHP Notice: A session had already been started - ignoring session_start() in E:\sites\proig.com.br\sair.php on line 2
[04-Feb-2016 01:42:52 Europe/Berlin] PHP Parse error: syntax error, unexpected 'endif' (T_ENDIF) in E:\sites\proig.com.br\index.php on line 22
[04-Feb-2016 01:42:54 Europe/Berlin] PHP Parse error: syntax error, unexpected 'endif' (T_ENDIF) in E:\sites\proig.com.br\index.php on line 22

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisando teu código tem uns errinhos ai... voce abre if e fecha com ; teria que ser : (para fechar com endif;)

- session_start dependendo dos includes/requires voce só precisa fazer 1x;

- Voce fechou 2 endif em local errado, corrigi ai

equire_once ('funcoes/function.php');
//BD::conn();
if(isset($_POST['cadastrar']));
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$sobrenome = filter_input(INPUT_POST, 'sobrenome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);
endif;
if(cadastrar($nome, $sobrenome, $email, $login, $senha)):
echo'cadastrou';
else:
echo'erro ao cadastrar';
endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

olhei todo o codigo, não achei outra iniciação da session_start()

Pode ter um só, mas se der include/require nele duas vezes, vai dar erro

 

Você pode usar a busca da sua IDE/Editor ou comandos como grep para buscar todas as ocorrências de "session_start()" em seu projeto. Se, realmente, só existir um, esse arquivo está sendo chamado mais de uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.