Ir para conteúdo

POWERED BY:

Arquivado

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

li0n.coder

Não exibe nenhum resultado:

Recommended Posts

Escrevi essa função para listar todas as databases mysql, mas, não exibe nenhum resultado e nenhum erro.

    public function listDatabase() {
        try {echo 'chegou até aqui 1';
            $query = $this->db->prepare( 'SHOW DATABASES' );
             
            while( ( $this->db = $query->fetchColumn( 0 ) ) !== false )
            {
                echo 'Chegou até aqui 2';
                echo $db.'<br>';
            }
            
        } catch (PDOException $e) {
            die("DB ERROR: ". $e->getMessage());
        }
    }
$this->db

   $this->db = new PDO(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET, DB_USER, DB_PASS, $options);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionei mais um echo para testar

    public function listDatabase() {
        
ini_set( 'display_errors', true );

error_reporting( E_ALL );
        try {echo 'chegou até aqui 1';
            $query = $this->db->prepare( 'SHOW DATABASES' );
             
            while( ( $this->db = $query->fetchColumn( 0 ) ) !== false )
            {
                echo 'Chegou até aqui 2';
                echo $db.'<br>';
            }
             echo 'chegou até aqui 3';
            
        } catch (PDOException $e) {
            die("DB ERROR: ". $e->getMessage());
        }
    }
Ele exibiu o "Chegou até aqui 1" e o "Chegou até aqui 3", mas nada do "Chegou até aqui 2"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou! Mas agora estou com outro problema, como faço para mostrar junto a collation?

    public function listDatabase() {
        
ini_set( 'display_errors', true );

error_reporting( E_ALL );
        try {
            $query = $this->db->prepare( 'SHOW DATABASES' );
            $query->execute();
             
            while( ( $this->db = $query->fetchColumn( 0 ) ) !== false )
            {
                echo '
                <tr>
                    <td>
                        <input type="checkbox" id="test4" />
                        <label for="test4"> </label>
                    </td>
                    <td>'.$this->db.'</td>
                    <td>latin1_swedish_ci</td>
                </tr>';
            }
            
        } catch (PDOException $e) {
            die("DB ERROR: ". $e->getMessage());
        }
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

use fetchRow em vez de fetchColumn. Assim terá cada linha, com todas as colunas. Veja: http://www.ultimatephp.com.br/como-usar-pdo-com-banco-de-dados-mysql/

 

E use outra variável em vez de $this->db dentro do while. Da forma como você fez, você perde a instância da PDO que estava em $this->db, caso precise dela posteriormente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já arrumei, mas voltando a pergunta anterior: Como exibir o collation das database?

Isso não consta nas outras colunas, que agora são acessíveis por causa do fetchAll?

Então provavelmente precisará de outra consulta. Dê uma pesquisada no manual do mysql

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.