Ir para conteúdo

POWERED BY:

Arquivado

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

rogiel silva

Funcionar o impedimento de duplicação e o INSERT INTO juntos

Recommended Posts

Bom dia

 

Estou fazendo um cadastro de usuários, fiz a duplicação de usuário (esta parte esta funcionando), mas o insert into não funciona.

 

Alguém pode me ajudar?

<?php
//função erro
function erro() {
	echo "(!) Erro ocorrido. (!)";
}

//função inserir usando pdo
function inserir() {
$conn 	= new PDO('mysql:host=localhost;port=3306;dbname=conectaccess', 'root', '');

$nome		= $_POST['nome'];
$documento	= $_POST['documento'];
$email	    = $_POST['email'];
$usuario    = $_POST['usuario'];
$senha		= $_POST['senha'];


		$select = $conn->prepare("SELECT * FROM cad_usuarios where usuario ='$usuario'");
		$select->execute();
		$nlinhas=$select->rowCount(); 
			if ($nlinhas!=0){
				echo "Usuário já cadastrado!";
					}else{
try {
	//adiciona dados
	$add = $conn->prepare("INSERT INTO cad_usuarios (nome, documento, email, usuario, senha) 
							 VALUES (:nome, :documento, :email, :usuario, :senha");
	$add->bindValue(':nome', $nome, PDO::PARAM_STR);
	$add->bindValue(':documento', $documento, PDO::PARAM_STR);
	$add->bindValue(':email', $email, PDO::PARAM_STR);
	$add->bindValue(':usuario', $usuario, PDO::PARAM_STR);
	$add->bindValue(':senha', $senha, PDO::PARAM_STR);
	
	return $add->execute();
	}
	catch (PDOException $i)
	{
		//se tiver erro, exibe
		echo "Erro: " . $i->getMessage();
	}
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duplicação? Pra quê? Não entendi.

 

E qual é o problema com o INSERT? Dá erro? Qual?

Use errorInfo() para verificar se o MySQL retornou erro. Veja: http://www.ultimatephp.com.br/como-usar-pdo-com-banco-de-dados-mysql/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Beraldo

 

É o seguinte, quando eu vou cadastrar ele verifica se há usuário já cadastro (até aqui funciona perfeitamente), mas quando eu vou cadastrar um usuário que não tenha na tabela ele não esta inserindo.

 

Se eu deixar somente o código abaixo, ele insere o cadastro:

<?php
//função erro
function erro() {
	echo "(!) Erro ocorrido. (!)";
}

//função inserir usando pdo
function inserir() {
$conn 	= new PDO('mysql:host=localhost;port=3306;dbname=conectaccess', 'root', '');

$nome		= $_POST['nome'];
$documento	= $_POST['documento'];
$email	    = $_POST['email'];
$usuario    = $_POST['usuario'];
$senha		= $_POST['senha'];

try {
	//adiciona dados
	$add = $conn->prepare("INSERT INTO cad_usuarios (nome, documento, email, usuario, senha) 
							 VALUES (:nome, :documento, :email, :usuario, :senha");
	$add->bindValue(':nome', $nome, PDO::PARAM_STR);
	$add->bindValue(':documento', $documento, PDO::PARAM_STR);
	$add->bindValue(':email', $email, PDO::PARAM_STR);
	$add->bindValue(':usuario', $usuario, PDO::PARAM_STR);
	$add->bindValue(':senha', $senha, PDO::PARAM_STR);
	
	return $add->execute();
	}
	catch (PDOException $i)
	{
		//se tiver erro, exibe
		echo "Erro: " . $i->getMessage();
	}
}

?>

Mas quando eu acrescento o código abaixo, ele não insere os registro:

<?php

		$select = $conn->prepare("SELECT * FROM cad_usuarios where usuario ='$usuario'");
		$select->execute();
		$nlinhas=$select->rowCount(); 
			if ($nlinhas!=0){
				echo "Usuário já cadastrado!";
					}else{

}
?>

A primeira função é para inserir os dados do formulário para a tabela e a segunda é para verificar se o usuário digitado no formulário existe na tabela, mas quando junto os dois código (no post 1) o INSERT INTO não adiciona o usuario, o código não informar nenhum erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

rowCount() não retorna o número de linhas de um SELECT. Ele serve para INSERT, DELETE e UPDATE.

 

Veja:

 


PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

 

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

fonte: http://php.net/manual/pt_BR/pdostatement.rowcount.php

 

Veja o Exemplo #2 desse link para entender como contar os registros retornados pelo SELECT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Beraldo

 

Eu vi o exemplo e acrescentei o fetchColumn(), mais acontecu a mesma coisa. Ele verifica se exsti o usuario. Mas quando vou inserir um novo que não tenha na tabela o codigo não adiciona.

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.