PHP+SQL - Query não insere, mas não dá erro

hedz

Power Member
Boas pessoal.

Estou aqui com um problema, quando tento inserir um registo na base de dados, nada acontece. Não retorna erros, nada de nada... Alguém pode dar uma olhada nisto? :/

Código
Código:
if($tipo==1) // funcionario{
	//Variáveis de registo
	if(isset($_POST["username"])){ $username=$_POST["username"];  }
	if(isset($_POST['password'])){ $password=$_POST['password']; }
	if(isset($_POST['nome'])){ $nome=$_POST['nome']; }
	if(isset($_POST['contacto'])){ $contacto=$_POST['contacto']; }
	if(isset($_POST['email'])){ $email=$_POST['email']; }
	if(isset($_POST['cargo'])){ $cargo=$_POST['cargo']; }
	//Verificação & Inserção do Registo
	$query="select * from funcionario where username='".$username."'";
	$userverification=mysqli_query($cnn,$query);
	$verificar=mysqli_num_rows($userverification);
	if ($verificar==1)
	{
		header("Location:../erro.php?t=3");
	}
	else 
	{
		$query = "insert into funcionario(username, password, nome, contacto, email, cargo) values 
		('".mysql_real_escape_string($username)."'
		,md5('".mysql_real_escape_string($password)."')
		,'".mysql_real_escape_string($nome)."'
		,'".mysql_real_escape_string($contacto)."'
		,'".mysql_real_escape_string($email)."'
		, '".mysql_real_escape_string($cargo)."')";
		$result=mysqli_query($cnn,$query);
		echo $query;
		echo mysql_error();
		//header("Location:../sucesso.php?t=3");
	}

Query que retorna (exemplo)
Código:
[COLOR=#ffffff][FONT=Times New Roman]insert into funcionario(username, password, nome, contacto, email, cargo) values ('gajo' ,md5('pwenc') ,'Nome do Gajo' ,'lelo' ,'[email protected]' , '1')[/FONT][/COLOR]

Estou preso nisto e como tenho pouco conhecimento de SQL estou a ver-me à rasca, por isso se pudessem ajudar era fantástico...


Cumps
 
Primeiro, lê sobre prepared statements para não teres que andar a construir strings de SQL que são inseguras.
Segundo, ao executar essa página qual é o output? Aparece-te a query?
E quando executas essa query directamente na DB, dá algum erro?

Geralmente, nos inserts se houver algum erro com a PK, os dados não são inseridos mas a query devolve verdadeiro como resultado.
 
Boas pessoal.

Estou aqui com um problema, quando tento inserir um registo na base de dados, nada acontece. Não retorna erros, nada de nada... Alguém pode dar uma olhada nisto? :/

Código
Código:
if($tipo==1) // funcionario{
    //Variáveis de registo
    if(isset($_POST["username"])){ $username=$_POST["username"];  }
    if(isset($_POST['password'])){ $password=$_POST['password']; }
    if(isset($_POST['nome'])){ $nome=$_POST['nome']; }
    if(isset($_POST['contacto'])){ $contacto=$_POST['contacto']; }
    if(isset($_POST['email'])){ $email=$_POST['email']; }
    if(isset($_POST['cargo'])){ $cargo=$_POST['cargo']; }
    //Verificação & Inserção do Registo
    $query="select * from funcionario where username='".$username."'";
    $userverification=mysqli_query($cnn,$query);
    $verificar=mysqli_num_rows($userverification);
    if ($verificar==1)
    {
        header("Location:../erro.php?t=3");
    }
    else 
    {
        $query = "insert into funcionario(username, password, nome, contacto, email, cargo) values 
        ('".mysql_real_escape_string($username)."'
        ,md5('".mysql_real_escape_string($password)."')
        ,'".mysql_real_escape_string($nome)."'
        ,'".mysql_real_escape_string($contacto)."'
        ,'".mysql_real_escape_string($email)."'
        , '".mysql_real_escape_string($cargo)."')";
        [COLOR=#ff0000]$result=mysqli_query($cnn,$query);[/COLOR]
        echo $query;
        echo mysql_error();
        //header("Location:../sucesso.php?t=3");
    }

Query que retorna (exemplo)
Código:
[COLOR=#ffffff][FONT=Times New Roman]insert into funcionario(username, password, nome, contacto, email, cargo) values ('gajo' ,md5('pwenc') ,'Nome do Gajo' ,'lelo' ,'[email protected]' , '1')[/FONT][/COLOR]

Estou preso nisto e como tenho pouco conhecimento de SQL estou a ver-me à rasca, por isso se pudessem ajudar era fantástico...


Cumps

Substitui o que meti a vermelho por isto:

Código:
if (!mysqli_query($cnn,$query))
  {
  die('Error: ' . mysql_error());
  }
else
echo "1 record added";

Depois diz se returnou erro.

E já agora altera a variável query para query1 que já a usas anteriormente.
 
Última edição:
Problema resolvido. Pelos vistos era um erro num datatype do campo 'e-mail'. Esta é uma base de dados importada e deve ter dado algum erro na importação :/

Obrigado a todos anyway :)
 
Back
Topo