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 gramosiri2
      Ola amigos, estou tentando fazer uma confirmação de cadastro por email, porém não estou tendo êxito. Consigo pegar o usuario, email e senha. Porem quando dou um 'echo' na variavel $id e $md5 para conferir os dados não aparece nada e o INSERT não é feito. Segue o codigo.
       
      <?php $host = "mysql:busca;host=localhost"; $usuario = "root"; $pass = ""; try{ $pdo = new PDO($host, $usuario, $pass); }catch(PDOExecption $e){ echo "Falha: ". $e->getMessage(); } $user = addcslashes($_POST['user'],"F"); $email = addcslashes($_POST['email'],"F"); $senha = md5(addcslashes($_POST['senha'],"F")); $pdo->query("INSERT INTO tabela1 SET user='$user', email='$email', senha='$senha'"); $id = $pdo->lastInsertId(); $md5 = md5($id); $assunto = "Confirme seu cadastro"; $link = "confirma.php?h=".$md5; $mensagem = '<a href="'.$link.'">Clique aqui para confirmar: </a>'; $header = "From: teste"; echo $user.'<br>'; echo $email.'<br>'; echo $senha.'<br>'; echo $id.'<br>'; echo $md5.'<br>'; mail($email, $assunto, $mensagem, $header); ?> TABELA:
      CREATE TABLE `tabela1` ( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `user` varchar(50), `email` varchar(100), `senha` varchar(50), `status` tinyint(4) );  
    • By mamotinho
      oi pessoal estou com um problema , não estou conseguindo passar todos os valores o foreach no json_encode() alguém poderia me ajudar, eu estou tentando monta um mecanismo de refresh em tempo real de uma lista de notificação veja abaixo:
       
      <script type="text/javascript"> function make_call() { // Fazendo requisição AJAX $j.post('teste.php', function (frase) { // Exibindo frase $j('#listas').html('<i>' + frase + '</i>'); }, 'JSON'); setTimeout(function(){ make_call(); }, 5000); } </script>
      Aqui é o arquivo que quero enviar para a div #lists
       
      <?php require("conexao/directory.php"); $notificar = $db->query("select TOP 5 * from Techi7CP.dbo.cabal_notificacao_geral order by regdate desc"); $notificacao = $notificar->fetchAll(); $count_notificacao = abs($notificar->rowCount()); if($count_notificacao==0){ echo '<li style="text-align:center;">não existe notificações no momento.</li>'; }else{ foreach($notificacao as $notif){ $consulta_conta = $db->query("select * from account.dbo.cabal_auth_table where UserNum='".$notif['usernum']."'")->fetchObject(); switch($notif['acao']){ case 'logadopremiado' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle red small">redeem</span>'.$notif['jogador'].' ganhou no Logado Premiado</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'mudarsenha' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle teal small">vpn_key</span>'.$consulta_conta->Nome.' alterou sua senha</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'distribuirpontos' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle cyan small">control_point</span>'.$notif['jogador'].' distribuiu seus pontos</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'girodasorte' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle brown small">star_border</span>'.$consulta_conta->Nome.' usou o giro da sorte</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'sistematpoint' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle green small">golf_course</span>'.$notif['jogador'].' recebeu seu tpoint por clique</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'combo' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle amber small">videogame_asset</span>'.$notif['jogador'].' fez '.$notif['ExtraDetalhes'].' em sua primeira vez</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; } } } ?> como eu faria para ser exibido todos os resultados registrados com o json_encode().
    • By Matheus B. Siqueira
      Meu PDO, não está retornando nenhum valor, e está dando erro ao tentar baixar o arquivo:
       

       
       
      <?php //se não tiver o parametro, mata a aplicação. if (isset($_POST['codigo_video'])) { $codigo_video = $_POST['codigo_video']; } //Aqui está um exemplo simples de como fazer uma conexão PDO $host = 'localhost'; $db = 'onteach'; $user = 'root'; $pass = 'root'; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; try { $pdo = new PDO($dsn, $user, $pass); } catch (PDOException $e) { throw new PDOException($e->getMessage(), (int)$e->getCode()); } //$pdoQuery = $pdo->query("SELECT conteudo.arquivo FROM conteudo WHERE conteudo.conteudo_video = '{$codigo_video}'"); try{ $ready = $pdo->prepare("SELECT conteudo.arquivo FROM conteudo WHERE conteudo.conteudo_video = :codigo_video"); $ready->bindParam(':codigo_video', $codigo_video); // $ready = $pdo->prepare($pdoQuery); // $ready->execute(); }catch(PDOException $e){ echo $e->getMessage(); } while($rs = $ready->fetch(PDO::FETCH_ASSOC));{ $local = 'upload/'; $local_arquivo = $local.$rs; header('Content-type: octet/stream'); // Indica o nome do arquivo como será "baixado". Você pode modificar e colocar qualquer nome de arquivo header('Content-disposition: attachment; filename="'.$rs.'";'); // Indica ao navegador qual é o tamanho do arquivo header('Content-Length: '.filesize($local_arquivo)); // Busca todo o arquivo e joga o seu conteúdo para que possa ser baixado readfile($local_arquivo); } print_r($rs); ?> Alguém sabe resolver? Visto que o $rs não retorna o dado arquivo da tabela
    • By mamotinho
      Olá pessoal, já rodei a internet inteira procurando uma função para eu conectar ao banco de dados SQL Server que está minha máquina virtual Dedicado. estou programando um site na hospedagem com a versão 7.3.16 , eu queria uma solução para eu conectar ao meu banco de dados mssql utilizando pdo.
       
      Eu utilizo a seguinte conexão.
       
      class Database { protected static $db; protected $db_host = DB_HOST; protected $db_usuario = DB_USER; protected $db_senha = DB_PASS; private function __construct() { try { self::$db = new PDO("odbc:Driver={SQL Server};Server=".$this->db_host."; port=122; Uid=$this->db_usuario;Pwd=$this->db_senha;"); self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Connection Error: " . $e->getMessage()); } } public static function conexao() { if (!self::$db) { new Database(); } return self::$db; } } alguém pode me da solução de como faço isso funcionar no PHP 7 pra cima.
    • By mamotinho
      Olá, estou com dúvidas , eu tenho a seguinte execução 
       
      SELECT SUM(Cash) as soma FROM CashAccount Eu estou querendo pega o resultado desta consulta em PHP
      tipo
       
      $result = $pdo->query("SELECT SUM(Cash) as soma FROM CashAccount"); echo $result; Mais não sei como fazer aparece o mesmo resultado que é exibido quando eu faço a execução da query no SQL, por favor alguém poderia me informar como eu poderia está fazendo.
×

Important Information

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