Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Hugo1337

Falha ao ligar o SQL ao PHP

Mensagens Recomendadas

Hugo1337

Olá comunidade do Portugal a programar, estou começando a estudar sobre ligação de mySQL com php e estou com um problema o qual não consigo me livrar, estou desenvolvendo uma tela de login e ao fazer o login deveria cair numa pagina dizendo que a senha é invalida ou que a senha é correta, porem isso acontece impedindo o meu desenvolvimento 

 

(Página: http://localhost:63342/www/PHP_Fundamentos/verifica.php)

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10

Warning: Use of undefined constant mysqli - assumed 'mysqli' (this will throw an Error in a future version of PHP) in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10
mysqli

Estou usando WAMP, mySQL, phpMyAdmin e PhpStorm, não sei como sair disso, a seguir meu código:

 

login.html :

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <title>Sistema de Login</title>
    <meta charset="utf-8">
</head>
<body>
    <h4><center>Entre com seu usuario e senha para logar</center></h4>
<form name="form1" method="post" action="verifica.php">
    Nome: <input type="text" name="login" id="login"/> <br /><br />
    Senha: <input type="password" name="senha" id="senha"/> <br /><br />
    <input class="button" type="submit" value="entrar"/>

</form>

</body>
</html>

 

Conexa_BD.php :

<?php

$servidor ='127.0.0.1';
$usuario = 'root';
$senha = '';
$bancoDados = 'curso_php';

$conexao = mysqli_connect($servidor,$usuario,$senha,$bancoDados);

if (mysqli_connect_errno($conexao)) {
    echo "problemas para conectar no banco, verifique os dados!";
} else {
    echo "conexao realizada com sucesso";
}


?>

Verifica.php :

 

<?php

$servidor ='127.0.0.1';
$usuario = 'root';
$senha = '';
$bancoDados = 'curso_php';

$conexao = mysqli_connect($servidor,$usuario,$senha,$bancoDados) or die(mysqli_error());

mysqli_select_db('curso_php', $conexao) or die(mysqli);

if (mysqli_connect_errno($conexao)) {
    echo "problemas para conectar no banco, verifique os dados!";
} else {
    echo "conexao realizada com sucesso";
}

$login = $_POST["login"];
$senha = $_POST["senha"];

$selecao = mysqli_query("SELECT * FROM CADASTRO WHERE LOGIN = '$login' and senha = '$senha'");

$row = mysqli_fetch_array($selecao); // retorna a linha da consulta acima

if ($row == "") { // se a consulta retornar vazio da erro
    echo "<br>login e/ou senha invalidos";
    echo "<br><br>";
    echo "volte e tente novamente";
    exit;
}
else {
    echo "<br><br>Bem vindo <br> $login<br>";
}

Se alguem conseguir me ajudar a me livrar desse bloqueio ficaria muito agradecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Olá Hugo,

 

se leres com atenção a mensagem de erro, ela diz-te que na linha 10 do verifica.php, a função mysqli_select_db não tem os parâmetros correctos. 

segundo a documentação - http://php.net/manual/en/mysqli.select-db.php - o primeiro parâmetro deve ser o link mysqli e não o nome da bd como tu tens. 

Edit:  vê o “procedural style” e não o “object oriented style”

Espero que ajude. 

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hugo1337
5 horas atrás, tiago.f disse:

Olá Hugo,

 

se leres com atenção a mensagem de erro, ela diz-te que na linha 10 do verifica.php, a função mysqli_select_db não tem os parâmetros correctos. 

segundo a documentação - http://php.net/manual/en/mysqli.select-db.php - o primeiro parâmetro deve ser o link mysqli e não o nome da bd como tu tens. 

Edit:  vê o “procedural style” e não o “object oriented style”

Espero que ajude. 

Oi Thiago,

na verdade esqueci de falar que já tinha feito isso tambem, e aparece o seguinte:

Warning: Use of undefined constant mysqli - assumed 'mysqli' (this will throw an Error in a future version of PHP) in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10
mysqli

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Ainda na mesma linha (como diz o erro) tens

or die(mysqli);

O que é este mysqli? Se for uma variável devolveria ser $mysqli, se for uma string deveria ser “mysqli”....

de qq modo isso é um warning e não um erro pelo que não será a causa do teu problema (que não percebi ainda qual é) :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hugo1337

O meu problema é que não deveria cair numa janela mostrando esses avisos, e sim após eu fazer o login cair numa pagina dizendo que o login foi bem sucedido ou que a senha está incorreta, 

o que acontece se removo o "or die(mysqli)":

 

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10
conexao realizada com sucesso
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 21

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 23

login e/ou senha invalidos

volte e tente novamente

 

Se eu substituir por or die(mysqli_error());

 

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp64\www\PHP_Fundamentos\verifica.php on line 10

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Continuas portanto com o erro inicial na linha 10 que dizias já estar resolvido. 

Ve a documentação das funções 

mysqli_select_db

e

mysqli_error

porque não as estás a usar bem. (Faltam-te parâmetros ou estás a troca-los)

Assim que as usares da forma correcta, esses warnings desaparecerão.

Finalmente onde tens

if ($row == "") { // se a consulta retornar vazio da erro

Estando a usar mysqli_fetch_array não me parece que a resposta alguma vez seja uma string vazia (“”) - ou será um array ou será null. (Mais uma vez, vê a documentação)

boa sorte!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
toarelli

Amigo Tiago

algumas formas de como pode fazer a conexão com o Banco de Dados.

<?php

        //DB configuração Constants
        define('_HOST_NAME_', 'localhost');
        define('_USER_NAME_', 'root');
        define('_DB_PASSWORD', '');
        define('_DATABASE_NAME_', '_bancoDados_');
        
        //PDO Conexão com o Banco de Dados
        try {
          $conexao = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD);
          $conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $error_conecta) {
          echo 'ERROR: ' . $error_conecta->getMessage();
        }

?>

 

<?php

    define('HOST','localhost');
    define('DB','_bancoDados_');
    define('USER','root');
    define('PASS','');            

    $conexao = 'mysql:host='.HOST.'; dbname='.DB.';charset=utf8';

    try{
      
         $conecta = new PDO($conexao, USER, PASS);
         $conecta->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

         //Mensagem de sucesso
         //echo 'Conectado com Sucesso!';

       } catch(PDOexception $error_conecta) {

          echo htmlentities('Erro ao conectar, favor informe no e-mail: contato@contato.com.br '.$error_conecta->getMessage());
       
       }

?>

 

Espero ter ajudado.

Saudações

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Não querendo falar pelo Hugo mas acho que apenas vai confundir já que estes exemplos são usando PDO e o Hugo estava usar Mysqli. 

Em nada estes exemplos ajudam a perceber o que está mal com o código dele, apenas mostram uma alternativa ( e existem muuuitas outras para ligar a uma bd MySQL). 

Ao Hugo sugiro ler a documentação. Alguém teve muito trabalho a escrevê-la e está lá tudo o que ele precisa para resolver os problemas que o código dele tem. 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hugo1337

Bom... felizmente consegui resolver o problema estava no verifica.php linha 16

$selecao = mysqli_query($conexao, "SELECT * FROM CADASTRO WHERE LOGIN = '$login' and senha = '$senha'");

faltou o $conexao

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.