Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Warning: mysqli_query() expects parameter 2 to be string, object given in [/size]E:\xampp\htdocs\cadastro\cadastrar.php on line [/size]45
Warning: mysqli_query() expects parameter 2 to be string, object given in [/size]E:\xampp\htdocs\cadastro\cadastrar.php on line [/size]46
Alguém pode me ajudar??
cadastrar.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Cadastrar</title>
</head>
<body>
<?php
include 'config.php';
$nome = isset( $_POST['nome'] ) ? $_POST['nome'] : 'valor_padrao';
$sobrenome = isset( $_POST['sobrenome'] ) ? $_POST['sobrenome'] : 'valor_padrao';
$email = isset( $_POST['email'] ) ? $_POST['email'] : 'valor_padrao';
$usuarios = isset( $_POST['usuarios'] ) ? $_POST['usuarios'] : 'valor_padrao';
$info = isset( $_POST['info'] ) ? $_POST['info'] : 'valor_padrao';
// Vamos checar algum erro nos campos
if ((!$nome) || (!$sobrenome) || (!$email) || (!$usuarios)){
echo "ERRO: <br /><br />";
if (!$nome){
echo "Nome é requerido.<br />";
}
if (!$sobrenome){
echo "Sobrenome é requerido.<br /> <br />";
}
if (!$email){
echo "Email é um campo requerido.<br /><br />";
}
if (!$usuarios){
echo "Nome de Usuário é requerido.<br /><br />";
}
echo "Preencha os campos abaixo: <br /><br />";
include 'formulario_cadastro.php';
}else{
// Vamos checar se o nome do usuario escolhido ja existem no banco de dados
$sql_email_check = mysqli_query($conexao,"SELECT COUNT(id) FROM usuarios WHERE email='{$email}'");
$sql_usuarios_check = mysqli_query($conexao,"SELECT COUNT(id) FROM usuarios WHERE usuarios='{$usuarios}'");
$eReg = mysqli_query($conexao,$sql_email_check);// or exit(mysqli_error($conexao));
$uReg = mysqli_query($conexao,$sql_usuarios_check);// or exit(mysqli_error($conexao));
$email_check = $eReg[0];
$usuarios_check = $uReg[0];
if (($email_check > 0) || ($usuarios_check > 0)){
echo "<strong>ERRO</strong>: <br /><br />";
if ($email_check > 0){
echo "Este email já está sendo utilizado.<br /><br />";
unset($email);
}
if ($usuarios_check > 0){
echo "Este nome de usuário já está sendo utilizado.<br /><br />";
unset($usuario);
}
include 'formulario_cadastro.php';
}else{
//Se passarmos por esta verificacção ilesos é hora de finalmente cadastrar os dados.
//Vamos utilizar uma função para gerar a senha de forma randômica
function gerarSenha($tamanho=9, $forca=0) {
$vogais = 'aeiouy';
$consoantes = 'bcdfghjklmnpqrstvwxz';
if ($forca >= 1) {
$consoantes.= 'BCDFGHJKLMNPQRSTVWXZ';
}
if ($forca >= 2) {
$vogais .= "AEIOUY";
}
if ($forca >= 4) {
$consoantes .= '123456789';
}
if ($forca >= 8 ) {
$vogais .= '@#$%';
}
$senha = "";
$alt = time() % 2;
for ($i = 0; $i < $tamanho; $i++) {
if ($alt == 1) {
$senha .= $consoantes[(rand() % strlen($consoantes))];
$alt = 0;
} else {
$senha .= $vogais[(rand() % strlen($vogais))];
$alt = 1;
}
}
return $senha;
}
$senha_randomica = gerarSenha();
$senha = md5($senha_randomica);
//Inserindo os dados no banco de dados
$info = htmlspecialchars($info);
$sql = mysqli_query($conexao,"INSERT INTO usuarios (nome,sobrenome,email,usuarios,senha,info,
data_cadastro) VALUES ('$nome','$sobrenome','$email','$usuarios','$senha','$info',now())")
or die( mysql_error());
if (!$sql){
echo "Ocorreu um erro ao criar sua conta, entre em contato.";
}else{
$id = mysqli_insert_id($conexao);
//Enviar um email ao usuario para confirmação e ativar o cadastro!
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";
$subject = "Confirmação de cadastro - teusite.com.br";
$mensagem = "Prezado {$nome} {$sobrenome},<br />
Obrigado pelo seu cadastro em nosso site, <a href='[http://www.teusite.com.br'>](http://www.teusite.com.br)
[http://www.teusite.com.br!http://www.teusite.com.br/ativar.php?id={$id}&code={$senha}'>'>[http://www.teusite.com.br/ativar.php?id={$id}&code={$senha}](http://www.teusite.com.br/ativar.php?id=%7B%24id%7D&code=%7B%24senha%7D)'>
[http://www.teusite.com.br/ativar.php?id={$id}&code={$senha}](http://www.teusite.com.br/ativar.php?id=%7B%24id%7D&code=%7B%24senha%7D)
</a>
<br /> <br />
Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo
efetuado o login com os seguintes dados abaixo:<br > <br />
<strong>Usuario</strong>: {$usuarios}<br />
<strong>Senha</strong>: {$senha_randomica}<br /> <br />
Obrigado!<br /> <br /><br />
Esta é uma mensagem automática, por favor não responda!";
mail($email, $subject, $mensagem, $headers);
echo "Foi enviado para o email ".$email." um pedido de confirmação de cadastro,
por favor verifique e sigas as instruções!";
}
}
}
?>
<br /><br />Faça o seu login!<a href="formulario_login.html">Clique Aqui!</a>
</body>
</html>Alterei e agora dá esse erro:
Fatal error: Cannot use object of type mysqli_result as array in E:\xampp\htdocs\cadastro\cadastrar.php on line 48
Você precisa usar mysqli_fetch_assoc antes de buscar os valores no array
Veja este tutorial
Cadê a conexão? só tem a variável, ela está definida onde?
config.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Conexão</title>
</head>
<body>
<?php
$host = "localhost";
$user = "root";
$senha = "";
$banco = "cadastro";
$conexao = mysqli_connect($host,$user,$senha,$banco);
if (mysqli_connect_errno($conexao)) {
echo "Erro: ".mysqli_connect_errno();
}
?>
</body>
</html>
esse é o código que faz a conexão com o banco de dados.
Seu problema não é a conexão. Se fosse, mysqli_query estaria falhando.
O problema é não usar fetch_*, como mysqli_fetch_assoc, como citado no Post #4
Fiz essa alteração:
$sql_email_check = "SELECT COUNT(id) FROM usuarios WHERE email='{$email}'";
$sql_usuarios_check = "SELECT COUNT(id) FROM usuarios WHERE usuarios='{$usuarios}'";
$eReg=mysqli_fetch_array($conexao,$sql_email_check);
$uReg=mysqli_fetch_array($conexao,$sql_usuarios_check);
E deu esse erro:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in E:\xampp\htdocs\cadastro\cadastrar.php on line 45
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in E:\xampp\htdocs\cadastro\cadastrar.php on line 46
Não precisa passar o link de conexão, apenas o retorno de mysqli_query
Veja os exemplos aqui.
Tente substituir este trecho
Por este