Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bobrinha

Como chamar função pdo ?

Recommended Posts

Ola pessoal estou começando a estudar pdo e logo vem as duvidas, bom vamos la, eu criei um arquivo chamado 3 arquivos como segue abaixo, porem no index.php como eu chamo a funcao criada? é possivel criar uma classe e utilização a função dentro dela? como?

 

conexao.php

<?php
    
    function conectar(){
    try{
        $pdo=new PDO("mysql:host=localhost;dbname=bobrinha","root","123");        
    }
    catch(PDOException $error){
        echo $error->getMessage();
    }
    return $pdo;
    }
?>

funcoes.php

<?php
   function listar(){
    
    if(!empty($_GET["id"])):
        
    $id = addslashes(trim($_GET['id']));
    
    $buscar = $pdo->prepare("SELECT * FROM membros WHERE id=:id");
    $buscar->bindValue("id","$id",PDO::PARAM_INT);
    $buscar->execute();
    
    $linha = $buscar->fetchAll(PDO::FETCH_OBJ);
    
        foreach($linha as $listar){
            echo "email: ".$listar->email."";
            echo "nome: ".$listar->nome."<br>";
        }
    endif;
    }
    
    }
?>

index.php

<?php    
    include_once("conexao.php");
    $pdo=conectar();
    		
		$sessao = ($_GET["conteudo"]);

		if($sessao == "membros"){
		
              COMO CHAMO A FUNCAO AQUI PARA EXIBIR ?

			}

            else{
                echo "Nenhum pagina para exibir";
            }

?>

Estou perdido ai, agradeço desde de ja qualquer ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Para listar a função é simples:

<?php
require_once("funcoes.php"); // Inclui o arquivo das funções
listar(); // Chamo a função listar do arquivo funcoes.php
?>

Espero ter Ajudado ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos não acontece nada de nenhuma das duas formas acima sempre aparece a mensagem de Nada :closedeyes: sem usar pdo é eu sempre chamei a função assim <?php funcaonome(); ?> e funciona certinho mais da forma acima so exibi se os resultados se eu acessar diretamente a pagina funcoes.php nao puxa na index

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nessa função você tem uma chave a mais.

 

já corrigiu isso, faz um debug neste script

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode passar uma função como parâmetro de outra:

  function conectar()
  {
    try{
        $pdo=new PDO("mysql:host=localhost;dbname=bobrinha","root","123");         
    }
    catch(PDOException $error){
        echo $error->getMessage();
    }
    return $pdo;
    }

function listar($conectar)
{
    
    if( $conectar  instanceof PDO)
    {
        # seu código aqui...
    }
}

listar( conectar() );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams Duarte que chave a mais? o script esta funcionando perfeitamente quando acesso funcoes.php direto no navegador

 

dochipis, desculpe mais não entendi sua logica na explicação e me parece não ser o que pretendo, visto que apenas quero chamar a função algo do tipo <?php minhafuncao(); ?> só isso na index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

function listar(){

 

if(!empty($_GET["id"])):

 

$id = addslashes(trim($_GET['id']));

 

$buscar = $pdo->prepare("SELECT * FROM membros WHERE id=:id");

$buscar->bindValue("id","$id",PDO::PARAM_INT);

$buscar->execute();

 

$linha = $buscar->fetchAll(PDO::FETCH_OBJ);

 

foreach($linha as $listar){

echo "email: ".$listar->email."";

echo "nome: ".$listar->nome."<br>";

}

endif;

}

 

} //<-------------------- Essa

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams Duarte essa barra ai foi apenas copiada errada simplesmente isso como disse o script esta funcionando perfeitamente e daria erro se essa barra existisse no script :closedeyes:

 

OBS: ao chamar a função assim na index.php

 

<?php listar(); ?

 

Erro: Fatal error: Call to a member function prepare() on a non-object in

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um Debugging como eu disse, ou não sabe fazer uma depuração básica em um script?

 

Uma simples função já ta apanhando imagina algo mais avançado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php listar(); ?

 

Erro: Fatal error: Call to a member function prepare() on a non-object in

 

Vamos lá, sobrou um tempo aqui!

 

Primeiro que você continua chamando a função sem passar o parâmetro de conexão para pdo, veja que postei lá em cima listar($pdo);

 

O que você tinha que fazer era fazer o mesmo na função function listar($pdo){ } :ninja:

 

Vamos corrigir a caca <_< , evite usar $_GET[], $_POST[] ou $_REQUEST[] em funções genéricas, em métodos de classes e até aceitável em alguns casos.

 

 

Siga a lógica e corrija seu script.

function listar($pdo=null, $id=null){

	if (isset($id)):	
		
		$sql = sprintf("prepare(\"SELECT * FROM membros WHERE id = '%d'\")", $id );
		
		echo $pdo . '->';
		echo $sql;
		
	else :
		return false;
	endif;

}
$_GET['id'] = 1000;

$pdo = '$pdo';
$id = addslashes(trim($_GET['id']));

listar($pdo, $id);

Estude mais lógica! :thumbsup:

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.