Jump to content
Lucas Antonio

Erro com conexão

Recommended Posts

Estou com um problema de rowCount bom vou explicar da melhor forma possível meu erro e irei mostrar abaixo, eu fiz a conexão externa por config.php com class e na hora deu puxar na index.php da erro de rowCount e se não declaro ela na index ele não procede.

 

Código do config.php

<?php

class Conexao{

	private $db;
	public function __construct(){

		try{

			$this->db = new PDO("mysql:dbname=parceiros;host=localhost", "root", "root");

		}catch(PDOException $e){
			echo "FALHA: ".$e->getMessage();
		}
	}

	public function verificar($email, $senha){

		$sql = ("SELECT * FROM usuarios WHERE email = ':email' AND senha = ':senha' ");
		$sql = $this->db->prepare($sql);
		$sql->bindValue(':email', $email);
		$sql->bindValue(':senha', $senha);

		$sql->execute();

		 $array = array();


    		if($sql->rowCount() > 0){
        		$array = $sql->fetch();

        		$_SESSION['id'] = $array['id'];
    		}  

    		return $array;
    }

}

Código do index.php

<?php
 require "asset/config/config.php";

 if(isset($_POST['mail']) && empty($_POST['mail']) == false){

    $email = addslashes($_POST['mail']);
    $senha = md5(addslashes($_POST['pass']));
    $dsn = new Conexao();
    $sql = $dsn->verificar($email, $senha);
    
   if($dsn->rowCount() > 0){

        $_SESSION['id'] = $array['id'];

        header("Location: painel/index.php");
   }
}
?>

 

Share this post


Link to post
Share on other sites

config.php : Troque:

':email' AND senha = ':senha'

config.php: por (removi as aspas):

:email AND senha = :senha

index.php: Troque:

if($dsn->rowCount() > 0){

index.php: por:

if(!empty($sql)){

Nessa forma atual que você construiu o código não é possível usar rowCount() usando o método verificar(), pq rowCount() não existe, ele retorna como método indefinido. Nesse contexto, você tem que verificar se o retorno de verificar() é vazio, usando empty(), pra saber se retornou algum resultado ou se não retornou nada, pq você deu essa responsabilidade pra variável chamada $array dar o retorno da busca lá no método verificar().

Share this post


Link to post
Share on other sites
6 horas atrás, BrunoBit disse:

config.php : Troque:


':email' AND senha = ':senha'

config.php: por (removi as aspas):


:email AND senha = :senha

index.php: Troque:


if($dsn->rowCount() > 0){

index.php: por:


if(!empty($sql)){

Nessa forma atual que você construiu o código não é possível usar rowCount() usando o método verificar(), pq rowCount() não existe, ele retorna como método indefinido. Nesse contexto, você tem que verificar se o retorno de verificar() é vazio, usando empty(), pra saber se retornou algum resultado ou se não retornou nada, pq você deu essa responsabilidade pra variável chamada $array dar o retorno da busca lá no método verificar().

 

Ele não conecta agora só retorna pro login denovo

Share this post


Link to post
Share on other sites
class Conexao{

	private $db;
	public function __construct(){

		try{

			$this->db = new PDO("mysql:dbname=parceiros;host=localhost", "root", "root");

		}catch(PDOException $e){
			echo "FALHA: ".$e->getMessage();
		}
	}

	public function verificar($email, $senha){

		$sql = ("SELECT * FROM usuarios WHERE email = :email AND senha = :senha ");
		$sql = $this->db->prepare($sql);
		$sql->bindValue(':email', $email);
		$sql->bindValue(':senha', $senha);

		$sql->execute();

		 $array = array();


    		if($sql->rowCount() > 0){
        		$array = $sql->fetch();

        		$_SESSION['id'] = $array['id'];
    		}  

    		return $array;
    }

}
require "asset/config/config.php";

 if(isset($_POST['mail']) && empty($_POST['mail']) == false){

    $email = addslashes($_POST['mail']);
    $senha = md5(addslashes($_POST['pass']));
    $dsn = new Conexao();
    $sql = $dsn->verificar($email, $senha);
    
   if(!empty($sql)){

        $_SESSION['id'] = $array['id'];

        header("Location: painel/index.php");
   }
}

 

  • Confuso 1

Share this post


Link to post
Share on other sites

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

  • Similar Content

    • By douglas79
      Bom dia,
       
      Estou seguindo uma vídeo aula no Youtube e o instrutor lá colocou uma sequência de div's (seja id ou class), o seletor background não funciona.

      Vou postar o código até o momento:
       
      @charset "utf-8";
       
      body, ul{padding:0;margin:0;background: #e2e2e2;list-style: none;}
      #geral{overflow: hidden;}
      #geral #topo{width:1018px;margin:0 auto;overflow: hidden;}
      #geral #topo #logo, #menuTopo{float:left;width:400px;}
      #geral #topo #logo{background:#ccc;}
      #geral #topo #menuTopo{}
      #geral #topo #menuTopo li{float:left;padding:5px;}

      Alguém pode me tirar essa dúvida???
      Desde já, agradeço!
    • By ndias
      Estou com duvida se minha conexão está encerrando.
       
      Utilizo PDO para me conectar:
       
      public static function getDb(){ try { $db = new \PDO( 'mysql:host=localhost;dbname=xyz;charset=utf8', 'xyz', 'xyz1234', array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ) ); return $db; } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } } public function __construct(\PDO $db) { $this->db = $db; } public function verifica(){ $sql = "SELECT * FROM tabela "; $result = $this->db->query($sql); $rows = $result->fetch(); if($rows){ }else{ } } public function __destruct() { unset($this->db); foreach ($this as $key => $value) { unset($this->$key); } } Estou fazendo certo? Como posso verificar se a conexão está ficando aberta?
    • By Jeová Oliveira dos Santos
      Não acha a função prepare
      class ClassCrud extends ClassConexao { #Atributos private $Crud; private $Contador; #Preparação das declarativas public function preparedStatements($Query, $Parametros){ $this->countParamentos($Parametros); $this->Crud=$this->connectaDB()->prepare($Query); echo $this->Contador; } #Contador de parâmentros private function countParamentos($Paramentors){ $this->Contador=count($Paramentors); } } ClassConexao
      <?php abstract class ClassConexao { #Realizar conexão com o banco de dados protected function conectaDB() { try { $conn = new PDO('mysql:host=localhost;dbname=crud;port=3308', "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$id = 1; //$stmt = $conn->prepare('SELECT * FROM cadastro WHERE id = :id'); //$stmt->execute(array('id' => $id)); //$result = $stmt->fetchAll(); //if (count($result)) { // foreach ($result as $row) { // print_r($row); // } //} else { // echo "Nennhum resultado retornado."; //} } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } Index
      <?php include ("Includes/Header.php"); ?> <div class="Content"> <?php include("Class/ClassConexao.php"); include("Class/ClassCrud.php"); $Crud=new ClassCrud(); $Crud->preparedStatements('desfilar',array(1,2,3,4,5)); ?> </div> <?php include ("Includes/Footer.php"); ?> Mais o erro acontece e não consigo resolver.
      Erro abaixo
      Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\Crud\Class\ClassCrud.php on line 14
    • By reis77
      Fala pessoal, estou ultimamente com um probleminha em um projeto no qual estou desenvolvendo e queria contar com o conhecimento de vocês para poder me ajudar.
      Então, eu fiz uma conexão com o banco de dados mysql PDO e quando o projeto inseri conteúdo lá ele aparece com caracteres estranhos no lugar de acentuações.
      Já fiz alguns procedimentos, mas não sei onde estou errando !
       
      A arquitetura do bando de dados.
       
      <?php
      ob_start();
      try {
          $con = new PDO("mysql:dbname=buscador2;host=localhost", "root", "",
           array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
          $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
      }
      catch(PDOExeption $e) {
           echo "Connection failed: " . $e->getMessage();
      }
      ?>
       
       
    • By Gildvan Arley
      <?php $consulta = $conexao->query('SELECT * FROM nomevip '); while ($exibir=$consulta->fetch(PDO::FETCH_ASSOC)){ ?> Olá
      Como posso remover 13 ids desse SELECT do 1 ao 13 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.