Jump to content
Fórum Script Brasil
  • 0

[RESOLVIDO]sem retorno de Array (PDO)


JaguA
 Share

Question

Ola a todos ...

Seguinte tenho a classe model com os metodos basico e estou tendo problema quando levo para o servidor online. acredito que possa ser questão de alguam configuração do servidor até, mas como não tenho outro servidor para testar vou postar aqui talvez seje outra coisa.

Metodo read da classe Model.

public function read( $where = null, $limit = null, $offset = null, $orderby = null ) {
                
            $where = ($where != null ? " WHERE ". $where : " ");
            $limit = ($limit != null ? " LIMIT ". $limit : " ");
            $offset = ($offset != null ? " WHERE ". $offset : " ");
            $orderby = ($orderby != null ? " ORDER BY ". $orderby : " ");
            $sql = " SELECT * FROM `{$this->_table}` {$where} {$orderby} {$limit} {$offset} ";
            
            $qry = $this->db->prepare($sql);
            $num = $qry->execute();
            
            if($num) {
                $retorno = $qry->fetchAll();
                var_dump($retorno); break;
                return $retorno;
             } else {
                 return 'Não foi encontrado registros';
             } 
        }
Model financeiro
<?php
    class financeiroModel extends Model {
        
        public $_table = 'contas';
        
        public function seleciona ($where = null,$limit = null,$orderby = null) {
            
            return $this->read($where,$limit,null,$orderby);
            
        }
    }
Controller de Secao
<?php
    class Secao extends Controller {
        
        public function init() {
                
            $this->bd_avisos = new avisosModel();
            $this->bd_financeiro = new financeiroModel();
        }
        
        public function index_action(){
            
                    
        }
        
        public function  avisos () {
            
            $dados['dados'] = $this->bd_avisos->seleciona();
            
            $this->view('secao/avisos',$dados,'blog');
            
        }
        
        public function contas () {
            
            $dados['dados'] = $this->bd_financeiro->seleciona();
            
            $this->view('secao/financeiro',$dados,'blog');
            
        }
        
            
        
    }
View
<?php  foreach ($view_dados as $row) {   
        echo "<p><a href='/contas/index/prestacao/{$row['id']}'> {$row['titulo']} </a></p><br>"; 
     
         }
var_dump($row); break;

?>

Bem na view não tive retorno algum no servidor Online então dei Var_dump pagina por pagina e ela sempre retorna 0.

se eu dr var_dump no prepare ele me retorna o Objeto.

mas apos passar pelo fecthAll() fica zerado

LEMBRANDO em meu computador funciona perfeitamente... eu trabalho com o hosting virtual do apache.

e ai o que acha que pode ser?

Edited by JaguA
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Bom,

Tenta o seguinte:

você já verificou se as informações para conexão com com banco estão corretas?

Insira a função error_reporting para exibir todos os erros.

error_reporting(E_ALL);
você pode debugar seu codigo dando um echo na variável $sql e verificar se sua app está gerando a query corretamente.
$sql = " SELECT * FROM `{$this->_table}` {$where} {$orderby} {$limit} {$offset} ";
echo $sql; exit();

Abraço!

Link to comment
Share on other sites

  • 0

Boa tarde

Romero,

Bem, eu já dei echo na string que é montada e sim está montando corretamente.

vou por o error_reporting e ve se consigo algo.

Bem, fiz o teste aqui o site continuando abrindo normalmente mas sem nenhum dado e se quer algum erro para ajudar esclarecer o que pode estar acontecendo, a unica coisa que me vem em mente é alguma configuração do servidor.

fiz uma conexão basica e um select logo depois dela em um unico arquivo para ve se retornava algo e permanece o mesmo erro.

Edited by JaguA
Link to comment
Share on other sites

  • 0

Bom, pode ser que o php.ini deste server esteja setado para não printar mensagens de erro.

Para verificar se a diretiva de exibição de erros esta chaveada para off, faça o seguinte:

echo (int)ini_get('display_errors');
Para setar esta diretiva para on, faça o seguinte:
ini_set('display_errors', 1);
você também pode criar um script contendo a funçao
phpinfo();
Execute o script e você deverá ver uma seção do PDO e seus drivers, verifique se o driver que você utiliza está presente. você também pode criar um script contendo o trecho abaixo:
if (!defined('PDO::ATTR_DRIVER_NAME')) { 
echo 'PDO unavailable'; 
} 
elseif (defined('PDO::ATTR_DRIVER_NAME')) { 
echo 'PDO available'; 
}

Link to comment
Share on other sites

  • 0

Desculpe a demora em responder.

Bem fiz os teste verificando tudo isso o resultado de todos foram positivos os drivers estão corretos display errors estão ativados...

certo eu tentei de outra forma ao invez do fetchAll() eu tentei com o fetch(PDO::FETCH_OBJ))

e também não tive resultados com toda certeza deve ser alguma coisa errada de minha parte porque não faz sentido tudo está funcionando e o sistema não me da um retorno eu so fico muito curioso com realação a funcionar tudo sem problemas em localhost.

Link to comment
Share on other sites

  • 0

você já fez um teste básico, assim:

$dsn = "mysql:host=localhost;dbname=test";
$username = "XXXXXX";
$password = "YYYYYY";

try {
    $pdo = new PDO($dsn, $username, $password);

    $stmt = $pdo->prepare("SELECT * FROM clientes");
    $stmt->execute();
    print_r($stmt->fetchAll());
}
catch(PDOException $e) {
    die("Não foi possível conectar no banco de dados\n");
}

Link to comment
Share on other sites

  • 0

Já sim Romero, agradeço imensamente a sua ajuda, mas já descobri o erro.

é algo muito besta e que ao descobrir fiquei com os nveros alem da flor da pele...

este sistema já estava em funcionamento eu somente estava atualizando com MVC e PDO tirando do modo estrutural e tudo mais, então simplesmente peguei o antigo joguei dentor de uma pasta e upei o novo e não funciono e eu também não vi como tava o antigo, sendo assim simplesmente fiquei contrariado de não mostrar nenhum dados e não ter retornos nos testes dos Fetch, então extrai o Banco de Dados e levei para outro servidor e o mesmo problema ficou persistindo, depois dessa maratona de duelos resolvi ver se existia algum dados nesse outro servidor eis que descobri que não tinha nada cadastrado fiz alguns cadastro e funcionou perfeitamente, então pensei bem eu alteri algumas coisas aqui eu altro la vai aparece então porque aqui ta sem dados e la no servidor original ta tudo certo, e não deu certo então fui la verificar os dados no Banco do servidor original que é quando que eu descubro que o banco de dados inteiro estava limpo e com todas as tabelas com sobrecarga.

Não faço a minima ideia do que ocorreu, e tinha muita informação o qual o meu cliente ainda não sabe que não esta la mais, eu tenho um backup mas não é o mais recente então vai ser bem complicado ter que explicar isso.

bem de qualquer forma o problema era algo muito idiota e simples, mas é algo tão irrelevante que não me passo pela cabeça que poderia ser já que havia um sistema funcionando ali já... é complicado mas enfim foi resolvido o misterio.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...