Warning - Acesso banco de dados MySQL - Access denied?

Estou tentando conectar com MySQL porem o seguinte erro surge:

Segue o codigo:

<?php
error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
$host = "localhost";
$user = "root";
$pass = "";
$banco = "trino_cadastro";
$conexao = mysqli_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($banco) or die (mysql_error());
?>

<?php

$nome=$_POST['nome'];
$sobrenome=$_POST['sobrenome'];
$nascimento=$_POST['nascimento'];
$estado=$_POST['estado'];
$cidade=$_POST['cidade'];
$email=$_POST['email'];
$senha=$_POST['senha'];
 
$sql = mysql_query("INSERT INTO usuarios(nome, sobrenome, nascimento, estado, cidade, email, senha) VALUES('$nome', '$sobrenome', '$nascimento', '$estado', '$cidade', '$email', '$senha')");
echo "Cadastrado com sucesso";
?>

O que pode ser e como posso resolver o problema?

Vou te dar algumas dicas que podem ajuda-lo:

  • Tente trocar aspas duplas por simples, as vezes isso resolve o problema.
  • Ele não está lendo o " $user " ele está tentando logar sem um usuário " ‘@’ localhost " deveria ser " root ‘@’ localhost "
  • Verifique a sintaxe do " MySQLi " e identifique se há algum conflito com o " MySQL ".
  • Verifique também o próprio usuário e suas permissões no banco de dados.
1 curtida

Primeira coisa: o erro é por falta de senha, o banco de dados está com senha, verifique!!!


Se código está conectando com mysqli e fazendo Query (Consultas) com mysql, que são helpers (funções totalmente diferentes)

Use o manual do mysqli e refaça seu código somente com ele, e não utilize mais mysql, ele foi removido na versão >= 7 e com isso seu código pode ficar incompativel com a hospedagem que já estão aderindo.

Tem um outro opção que é por pdo: segue seu manual, o legal desse tipo de conexão que se houver alteração de tipo de SGBD você pode utilizar ele sem problemas alterando poucas SQL.


Exemplo com mysqli:

<?php
error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
$host = "localhost";
$user = "root";
$pass = "";
$banco = "trino_cadastro";
$conexao = mysqli_connect($host, $user, $pass);

$nome=$_POST['nome'];
$sobrenome=$_POST['sobrenome'];
$nascimento=$_POST['nascimento'];
$estado=$_POST['estado'];
$cidade=$_POST['cidade'];
$email=$_POST['email'];
$senha=$_POST['senha'];

$stmt = $conexao->prepare("INSERT INTO usuarios(nome, sobrenome, nascimento, estado, cidade, email, senha) VALUES(?,?,?,?,?,?,?)");
$stmt->bind_param('sssssss',$nome, $sobrenome,$nascimento,$estado,$cidade,$email,$senha);
$stmt->execute();

Leia com atenção

O exemplo acima é salvando texto normal, eu vi nascimento se ela for do tipo date ou datetime, terá que fazer a conversão para ano, mes e dia (yyyy-MM-dd), podendo ocasionar mais erros.

Dragoon, Obrigado. Eu estou com um problema com a senha. Não coloquei senha quando instalei o WAMP Server. No phpmyadmin não consta senha, apenas usuário. Não estava conseguindo entrar no localhost/phpmyadmin, mudei o documento e ai funcionou. Tem ideia do que pode ser?

Complicado assim de longe saber, mas, de praxe nunca instale banco sem senha, mesmo que seja para desenvolvimento …

O mais seguro não seria usar PDO?

@marcolax se você usar MySQLi ou PDO, não tem diferença em relação a segurança, os duas maneiras são seguras, lógico tem que programar seguro !. Agora no caso do rapaz é a falta de senha para conectar ao banco de dados e não se é seguro ou inseguro.

@Dragon obrigado. Não sabia disso RSRSRS

1 curtida