Jump to content

Recommended Posts

Posted

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.

Posted (edited)

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. 

Edited by tiago.f
Posted
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

Posted

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 é) 🙂

Posted

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

Posted

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!

Posted

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

Posted

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. 

Posted

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

  • Vote 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.