PDO está ativado, mas não funciona! [RESOLVIDO]

1. PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 21:12h

Estou utilizando Ubuntu 12.10 com as versões mais recentes disponíveis nos repositórios dos componentes LAMP, a extensão e os drivers PDO_MYSQL estão ativados e sendo carregados corretamente. Quando me conecto ao banco, não me é retornado nenhum erro, mas ao tentar fazer uma consulta:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in /home/jonas/www/pdo/index.php:5 Stack trace: #0 /home/jonas/www/pdo/index.php(5): PDO->query('SELECT * FROM u...') #1 {main} thrown in /home/jonas/www/pdo/index.php on line 5


Já tentei modificar a sintaxe de várias formas, mas o erro persiste. Estou utilizando a sintaxe correta e o banco de dados e as tabelas existem e podem ser acessados normalmente pelo método mysql_query().


<?php
$conn = new PDO("mysql:host=localhost;dbname:System", "root", "development");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$selc = $conn->query("SELECT * FROM users");

while ($row = $selc->fetch(PDO::FETCH_ASSOC)) {
echo $row['user'];
}
?>


Alguém sabe como resolver? Estou com água na boca para usar esse PDO, pesquisei muito e não obtive sucesso...

Desde já, obrigado!


  


2. MELHOR RESPOSTA

tiago dos santos
serial10

(usa Ubuntu)

Enviado em 16/12/2012 - 22:26h

usei esse codigo em uma tabela de bairros com uma coluna bai_id e outra bai_nome e funciono, testa esse codigo ai

e não esqueça de colocar um igual em dbname=nomedobanco



<?php

try{

$conn = new PDO("mysql:host=localhost;dbname=nomedobanco", "root", "senha");

$selc = $conn->query("SELECT * FROM bairro");

while($row = $selc->fetch(PDO::FETCH_ASSOC)) {
echo $row['bai_codigo']."-".$row['bai_nome'];
}


}catch (PDOException $e){
$e -> getMessage();
}

?>



3. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

tiago dos santos
serial10

(usa Ubuntu)

Enviado em 16/12/2012 - 21:33h

tenta assim ve se da certo

$pdo = new PDO ( "mysql:host=localhost; dbname=seubanco", "usuario", "senha" );  


se não resolver...

coloca um try catch ou tira o $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); pra ve se funciona

try {

//comandos aqui
}
catch(PDOException $e) {
echo $e->getMessage();
}

qualquer coisa tem um tutorial muito bacana nesse site : http://objota.com.br/web/php/classe-de-conexao-com-php-utilizando-pdo.html


4. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:03h

<?php
$conn = new PDO("mysql:host=localhost;dbname:System", "root", "development");

$selc = $conn->query("SELECT * FROM users");

while ($row = $selc->fetch(PDO::FETCH_ASSOC)) {
echo $row['user'];
}
?>


E desta vez, o erro é:
Fatal error: Call to a member function fetch() on a non-object in /home/jonas/www/pdo/index.php on line 6


Me parece ser um problema do PHP, não de sintaxe... o que você acha?


5. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

tiago dos santos
serial10

(usa Ubuntu)

Enviado em 16/12/2012 - 22:09h

fez as alterações que eu falei?? se não der certo tenta usar o fetch(PDO::FETCH_OBJ)


6. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:17h

Fiz as alterações que você recomendou e o FETCH_OBJ também não funcionou


7. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:24h

Usando essa estrutura igual à do artigo que você recomendou, ele não retorna nenhum erro, porém, não exibe nenhum resultado no while, fazendo com que a página fique totalment em branco:

<?php
$pdo = new PDO("mysql:host=localhost;dbname:System", "root", "development");

$stmt = $pdo->prepare("SELECT * FROM users");

$stmt->execute();

while ($obj = $stmt->fetch(PDO::FETCH_OBJ)) {
echo $obj->title;
}
?>



8. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:32h

Com esse código funcionou!

Quando eu for implementar consultas em várias páginas, vou ter que reconfigurar a conexãoe usar try{cat em todas as consultas ou tem alguma forma resumida?


9. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:35h

Opa! agora funcionou assim:

<?php
$conn = new PDO("mysql:host=localhost;dbname=System", "root", "development");

$selc = $conn->query("SELECT * FROM categories");
while($row = $selc->fetch(PDO::FETCH_ASSOC)) {
echo $row['title'];
}
?>


Provavelmente havia algum erro de sintaxe no meu código. Muito obrigado, serial10!


10. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

tiago dos santos
serial10

(usa Ubuntu)

Enviado em 16/12/2012 - 22:37h

não, funciona sem try e catch tranquilamente xD

ahhh não esquece de marcar como resolvido!!! flw ai


11. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

tiago dos santos
serial10

(usa Ubuntu)

Enviado em 16/12/2012 - 22:39h

de nada cara!!
da uma lida tmb nessa parte de exceção e pesquisa sobre esse setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

qualquer coisa tamos ai!!!


12. Re: PDO está ativado, mas não funciona! [RESOLVIDO]

Jonas Vinícios Guartieri de Assis
jonasguartieri

(usa Debian)

Enviado em 16/12/2012 - 22:41h

Encontrei onde foi o erro!

Na string de conexão eu coloquei "dbname:nomedobanco" ao invés de "dbname=nomedobanco"






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts