Tenho visto muito o pessoal procurar artigos e tutoriais sobre PHP e percebi que a busca por banco de dados ainda é pouca. Pensei em mostrar aqui como se conectar à um banco de dados SQL, afinal de contas o PHP apenas para cálculos e comandos de servidor não é tãoooo divertido embora eu ache fascinante!
Veremos como se conectar ao PostgreSql que é o que eu utilizo como SGBD (sistema gerenciador de banco de dados), o pessoal tem utilizado muito o MySql que também é excelente, gosto mais do PostgreSql devido aos padrões mantidos estarem mais próximos do SQL. (Se ainda não tem instalado baixe em PostgreSql).
Bem, o postgre como muitos (ou todos) os SGBD’s devem receber como parâmetros os dados de conexão, tais como, usuário, senha, host, port, base.
No PHP o comando utilizado para conectar-se ao PostgreSql é o pg_connect(“parâmetros”), então nada melhor do que começarmos e iremos fazer isso com uma classe (Classes c/ PHP5) !
O arquivo conexao.class.php (o .class é apenas para identificarmos o arquivo como uma classe).
<?
Class Conexao
{
protected $host = “localhost”;
protected $user = “postgres”;
protected $pswd = “postgres”;
protected $dbname = “teste”;
protected $con = null;
function __construct(){} //método construtor
#método que inicia conexao
function open(){
$this->con = @pg_connect(“host=$this->host user=$this->user
password=$this->pswd dbname=$this->dbname“);
return $this->con;
}
#método que encerra a conexao
function close(){
@pg_close($this->con);
}
#método verifica status da conexao
function statusCon(){
if(!$this->con){
echo “<h3>O sistema não está conectado à [$this->dbname] em [$this->host].</h3>”;
exit;
}
else{
echo “<h3>O sistema está conectado à [$this->dbname] em [$this->host].</h3>”;
}
}
}
?>
Set os valores das variáveis host, user, pswd e dbname
host = geralmente localhost ou seu ip
user = usuário que criou ao instalar o postgre
pwsd = senha do usuário do postgre
dbname = a base que deseja se conectar no postgre
Como eu havia dito pg_connect() é o método PHP que conecta-se ao PostgreSql, o ‘@’ antes do método serve para inibir/ocultar as mensagens de erro do método caso ocorram durante a tentativa de conexao. Você pode retira-la e testa-la informando algum valor incorreto nas variáveis de conexão. Geralmente ocultamos essas mensagens para que um visitante ao acessar seu sistema não veja os parâmetros utilizados ou nomes de váriaveis que você utiliza na conexão, em outras palavras, ocultamos as mensagens por segurança. Existem outras formas de tratar os erros e as mensagens com segurança, mas isso não será abordado aqui. Ao menos nesse post, não!
Os valores contidos como parâmetros em pg_connect() são os valores das variáveis setadas no inicio da classe. Seria interessante criar métodos para setar os valores de variáveis de conexao apenas se você precisasse utilizar mais de um banco (não base, banco) na sua aplicação, para evitar criar 2 classes diferentes poderiamos fazer um método do tipo setUserBanco(), setHostBanco(“localhost 2”), entendeu ? ok!
Mas como trata-se apenas de 1 conexão, seria muitos métodos para pouca coisa!
O método open() retorna o estado da conexao (true ou false), com isso podemos através do método statusCon() saber se a conexao está ativa ou não.
O método close(), como você imaginou encerra a conexao chamando o método PHP pg_close();
Crie agora o arquivo index.php para testarmos a conexao
<?
#incluindo a classe conexao (supondo estar no mesmo diretorio)
include(‘conexao.class.php’);
#instanciando o objeto
$minhaConexao = new Conexao();
#chamada ao metodo open que abra a conexao
$minhaConexao->open();
#verificando o status da conexao
$minhaConexao->statusCon();
#encerrando a conexao
$minhaConexao->close();
#verificando a conexao apos close();
$minhaConexao->statusCon();
?>
É isso pessoal, bem simples e num post futuro veremos como gravar/editar/atualizar/excluir registros de uma tabela usando o PHP e PostgreSql.
Deixei um vídeo tosco mostrando/explicando melhor como funciona essa classe.
Dê uma olhada no vídeo aqui
Abraços,
Rafael Clares
bom obrigado o artigo me ajudou com algumas duvidas estagio como desenvolvedor de sistema do tribunal de justiça e estou começando desenvolvendo em php e ultilizando postgresql com banco dai algumas duvidas de conexão espero que você esteja sempre atualizando ok valeu…
Bom dia… Grata pela informação… Muito útil pra mim…
Qualquer dúvida posso perguntar de você?
Tenha um bom dia…
Cláudia fique à vontade para perguntar, no que for possível lhe ajudarei. Obrigado pelo comentário.
até logo,
Muito bom!
Me clareou bem as coisas!
;D
parabens!
rafaael,
Primeiramente muito bom seu artigo, parabens.
Estive lendo seu artigo ref. ao postgree + PHP e no meio da informatica com tantos BD e tanas linguagens de programação, gostaria se possível, uma opinião sua referente ao uso do PHP com o banco Mysql no quesitos:
– O banco suporta muitos registros? Quantos? Ou vc acha que existem bancos gratuitos que fazem melhor que o Mysql?
– A integração de ECF’s, impressoras matriciais e termicas, é descomplicada ou tem alguma linguagem melhor?
era somente isso…
Obrigado desde já!
Olá Alexandre, obrigado pelo comentário. Cara o MySql eu acho muito bom sim usei por algum tempo até conhecer o PostgreSql, eu particularmente acho o Postgre melhor de trabalhar e o principal motivo por eu continuar utilizando-o é devido à proximidade do padrão SQL. Por exemplo a forma de trabalhar é mais parecida com o padrão e o mySql no meu ver tem bem mais particularidades e prefiro ficar mais proximo do padrão. Acredito que o MySql hoje esteja bem melhor do que quando eu utilizei e depois da Sun te-lo “comprado” … muito nome rola agora em torno do MySql. De toda forma essa é minha opnião de usuário, não tenho dados técnicos que possam dizer qual é melhor, eu simplesmente usei um e usei outro e tirei minhas conclusões… até
Olá Rafael, ótimo artigo, muito prático. Fiz exatamente o que você colocou neste artigo. Só que não está apresentando as mensagens, nem de êxito ou problema com a conexão. A página index.php fica em branco. Sabe o que pode ser?
Vinicius, verifique primeiramente as tags PHP perceba que no código está apenas <? e não <?php … para funcionar com a tag menor é preciso que esteja descomentada a linha short_open_tag no seu PHP.INI.
O arquivo conexao.class.php nesse caso, está no mesmo diretório que o index.php.
Verifique também se seu PHP.INI está habilitado para o PGSQL (Postgre), a linha extension=php_pgsql.dll deve estar descomentada.
Bem, com isso você já tem algumas coisas para verificar…caso não consiga é só perguntar …
abraços
bom estou començando no php e gostaria de saber se para chamar a classe conexão e do mesmo jeito das includes
Axel, isso mesmo!
de um include e instancie a classe.
ate mais
Primeriamente, parabéns pelo artigo… Mas comigo aconteceu um erro muito estranho:
Instalei o postgre, crie o usuario, consegui conectar normalmente pelo pg_Admin III, então fui para o php.ini e as extensões do pg estão devidamente descomentadas, também rodei o php_info() e ele retornou: PGLOCALEDIR C:Program FilesPostgreSQL8.3sharelocale
ou seja, devidamente instalado.
Mas ao testar a sua classe e script, simplesmente não da erro algum, a página fica em branco… O que poderia ser?
Alexandre, retire o @ (arroba) da frente da chamada pg_connect(), o arroba inibe os erros. abraços
Bom Primeiramente Rafael Parabens percebo que vc atende as todas as duvidas coisa que e meio complicado hoje en dia,,, mas vamos la a include eu sei mas instanciar a classe NÂO ainda
não me leve a mal e que so Programava em Delphi
e to apanhando do PHPOO ainda até mais
Axel,
de uma lida no post, as 20 últimas linhas estão justamente mostrando como instanciar o objeto conexao.
Abraços.
bom obrigado Rafael, agora to com outro problema não consigo comfigurar o PHPPGADMIN no xammp e Wim xp eche so pra linux
Axel, infelizmente não uso o PhpPgAdmin localmente, logo, não tenho como ajuda-lo!
Dê uma olhada no google. Abraços
Mesmo Assim obrigado… ja consegui cara Veleu se alguem aew ta com Dificuldade posso postar a configuração Abraços ate outra divida
Olá Rafael… blz
Cara quero te dar os parabéns, pelos artigos sobre o PHP OOP, tenho feito alguns projetos mas nenhum orientado a objetos, minha principal duvida era como criar uma conexão através de classes, graças ao seu artigo já posso iniciar os passos para desenvolver aplicações PHP OOP baseado em BD, me disseram que programar orientado a objetos é mais tranquilo, do que criar arquivos individuais por mais extruturados que estejam vc concorda?
eu particularmente quero morrer quando tenho problemas com o header e looping infinitos do php, com PHP OOP este problema seria minimizado?
bom por enquanto é isto, espero que me responda
abs
Joelson, obrigado pelo comentário, fico feliz que tenha lhe servido.
Quanto à sua pergunta, com certeza OOP é mais tranquilo, na verdade é mais fácil em todos os sentidos, manutenção, reuso, etc…. Eu diria até que é “gostoso” de escrever ha-ha….
Bem, nunca tive problemas com header e looping, eu comecei a utilizar o PHP ja na versão 5 à pouco tempo, talvez eu encontre essas dificuldades que você mencionou, mas até agora não hehe ainda bem!
Comecei a escrever um artigo simples sobre OOP + BD com PHP5 e PostgreSQL mas como não houve nenhum interesse eu meio que dei uma brecada no artigo, também não sou doido né … hahaha
Na próxima semana vou passar para uma segunda etada, dando continuidade no artigo, acho que será algo bem interessante para quem está querendo aprender.
O primeiro é esse:
http://clares.wordpress.com/2009/04/09/php-5-classes-banco-de-dados/
abraços,
mt bom!!
Oi amigo, tudo bem? Aqui comigo aconteceu uma coisa curiosa, a função pg_close() não encerra a conexão. Quando eu tiro o @ ele me mostra o seguinte erro: “Warning: pg_close() expects parameter 1 to be resource, null given in C:xampphtdocsconexao.class.php on line 22”. Conferi com o manual do PHP e está tudo certo. Por acaso é alguma configuração no meu PHP? Estou usando o XAMPP 1.7.3 com Postgres 8.3
o pg_close() recebe um parâmetro, tente pg_colse($con); Sendo $con a var da conexão.
olha a sua dica foi muito util para concluir um trabalho. agradecia se me podece mandar o video….
Amigo, não entendi o lance de “mandar” o vídeo!
O link par ao vídeo está aí: http://screencast.com/users/rclares/folders/PHP/media/84f08508-325d-4960-9564-a8855decc4ea
É isso que está pedindo, não é ? Não está me pedindo para lhe enviar um vídeo de 40MB, certo ?
Enfim, o vídeo está disponível no link acima.
Abraços
SEU TUTORIAL NÃO DEU CERTO!
QUANDO EU RODO O CODIGO NO APACHE
NÃO APARECE NADA A TELA FICA TODA BRANCA!
E NEM CONECTA COM BANCO POSTGRESQL!
Rs rs , to achando que vc é que não deu certo amigão, deve ter escrito tudo em maiúsculas como fez no comentário, tente uma outra abordagem brother, por ex:
Olá, não consegui fazer, o que pode estar errado?
Sacou como é ? um pouco mais de humildade na hora de afirmar que uma coisa que você não sabe não funcionou!
Se tiver alguma dúvida e puder não escreve-la “gritando” … é só me perguntar ok, se reparar aí, respondo a todas as perguntas possíveis.
Boa sorte!
Olá, Rafael tudo bem com vc , poderia me ajudar? (tá bom assim pra vc brother!)
eu fiz tudo que vc falou descomentei as linhas no php.in, verifiquei tudo que vc ja disse
mais ainda não conecta no banco. ja criei o bancos e as tabelas mais quando fou conectar aparece em branco.
queria saber se eu tenho que instalar o postgre dentro da pasta do apache pra funcionar pois quero acessar o banco de dados via codigo.
outra coisa eu não fui rude com vc apenas falei que não deu certo?
eu entendo sobre programação php, java, ajax, C#, C++, mysql, oracle e sql serve. só que me pedirão pra desenvolver um sistema em postgres, como nunca dinha configurado um resolvi pedir ajuda.
porque eu instalo tudo certo crio o banco e as tabelas mais não consigo acessar, quando eu mudo pro sql server ele conecta no banco mais no postgres eu não consigo conectar.
mais faleu ai Rafael e desculpa ai por qualquer coisa flws!!!!
Carlos, o post é sobre conectar o PHP com PostgreSql, certamente eu cometi um erro ao não colocar no post que é requisito ter o postgre funcionando, digo isso porque a conexão feita pelo PHP é tão simples quanto a do MySql, uma única linha pg_connect(). Se o método não está funcionando é porque há algo de errado com PHP ou PostgreSQL.
Já descomentou a linha php_pgsql.dll ?
Se sim, verifique no diretório do postgre o arquivo data/pg_hba.conf , abra esse arquivo e verifique se essa linha está igual no seu arquivo:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Flw
Rafael, eu dei uma olhada pg_hba.conf esta ok!
ai eu prestei atenção na hora de estarta o postgres ele fala que não pode criar o doretorio .gnupg no “/opt/postgresql/9.0/.gnupg” o postgre tem acesso negado? o que eu faço pra resolver isso?
eu estou achando que por causa disso pois o codigo de conexão esta tudo ok!
Rafael outra coisa eu tenho que intalar o apache no mesmo diretorio ou não?
desde já agradeço! flws.
Carlos estou sem internet até segunda, só a partir desse dia poderia ajudar ok.
Então cara, sobre o problema do postgre não consigo te ajudar, talvez seja interessante você fazer uma busca no google, isso se acontece em qualquer base o problema.
oi, Rafael cara como tu conseguiu conectar com postgres
ja fiz de tudo mais so aparece apagina em branco
me uma luz ai cara!!
Verifique se a extensão php_pgsql está descomentada no php.ini
Ae, galera consegui conectar com postgres, esta ai o codigo:
e só isso pode ter certeza !!!
qualquer duvida posso ajudar!
if(!@($conexao=pg_connect (“host=localhost dbname=controle_acesso port=8080 user=postgres password=postgres”))) {
print “Não foi possível estabelecer uma conexão com o banco de dados.”;
} else {
//pg_close ($conexao);
print “Conexao OK!”;
}
Olá Rafael, tenho lido alguns artigos do seu site e pego muitas dicas. Agradeço pelo trabalho de apoio aos iniciantes. Estou com um problema após ler e reler seu post sobre conexão do php com db postgres eu resolvi testar, porém mesmo os dados estando corretos o php nao conetca no db existe alguma configuração prévia em ambos os softwares para que se comuniquem. Utilizo ubuntu 10.10, rodando postgresql 8.4, apache2 e php5 todos funfando 100% mas mesmo com sua ajuda ainda não consegui conectar no banco só aparece a msg de que nao estou conectado e mesmo que eu retire o ‘@’ do pg_connect nao me eh retornado o erro, se for possível me ajudar te agradeço…
Ricardo, você precisa ver se o PHP foi compilado com o Postgre, se você instalou o apache2 e o PHP e só depois intalou o postgre então você precisa recompilar a instalação do apache2 e PHP. Dê uma olhada no phpinfo() para ver se está compilado o postgre.
Rafael, observei novamente o phpinfo() e me parece que está ok, nele contém referências ao postgres sim e também ao pgsql, mas ainda assim eu nao consigo conectar ao banco nem pelo php tão pouco pelo pgadmin, o que eu devo setar nos arquivos de configuração do apache2, php5 e postgres8.4 para que ocorra essa interação?
Desde já agradeço sua colaboração…
Então Ricardo, acredito que seja algo na instalação dê uma busca no google pelo termo: PHP + PostgreSQL no Ubuntu
Dái irá encontrar os tutoriais de install, me recordo que no linux tem um lance de ter que alterar a senha mas não tenho certeza se na sua distro há essa necessidade!
Boa sorte!
Obrigado Rafael, refiz os passos de instalação do postgres, apache2 e php5 e descobri que não havia instalado o phppgadmin, após ter instalado o mesmo e modificado a senha do usuario postgres consegui conectar o php com postgres atráves do video que vc postou, agradeço mais uma vez pela sua ajuda. Não querendo ser muito chato, mas você tem algum material, tipo apostila ou manual de php? se tiver seria possivel me enviar por e-mail, como já disse estou começando a aprender a programar nessa linguagem e como estou nessa sozinho toda ajuda é bem vinda.
Vlw, até a próxima…
Ricardo, fico feliz que tenha conseguido!
Olha a melhor apostila de PHP que já vi é on-line, é na verdade a documentação do PHP, muito completa. http://www.php.net
Se souber o que quer fazer, como fazer é muito mais fácil!
abraços!
E ae Rafael,
Fui fazer um teste com essa classe, mas ele sempre mostra q não está conectado. Não teria q colocar a porta ?
fala rafael,
tive um problema aqui …… a função pg_close($this->con) não fecha a conexão. o que pode ser ? já fiz algumas alterações e nada ..
Eae Fábio, poxa cara, estranho mesmo, será que seu pgsql não está configurado para uma conexão persistente?
dá uma lida em:
http://php.net/manual/en/function.pg-close.php
De toda forma vou fazer um teste com esse exemplo que postei e ver se acontece aqui…
abs
Muito boa a explicação, muito didática.
Parabéns não somente pelo conteúdo apresentado mas também a forma como foi postado.
Me ajudou muito.
Olha excelente video. Gostaria em saber onde posso ver todos os videos que vc ja criou sobre php e postgre.
E se vc tem alguns videos ou tutoriais que explicam como trabalhar com html + php + postgre
Leandro, ainda não criei vídeos novos, infelizmente o tempo não está à nosso favor.
Em breve teremos mais conteúdos para compartilhar.
Fico lhe devendo essa.
abraços
Rafael me ajuda ai, to tentando aqui mas dá esse erro:
Fatal error: Call to undefined function pg_connect() in C:Arquivos de programasEasyPHP-5.3.8.0wwwpgclassesconexao.class.php on line 16
Pelo que parece ele não tá reconhecendo o pg_connect. Tem como me ajudar cara? Será que eu posso ter um contato melhor com você para resolver uns problemas por aqui? Caso tenha, entre em contato comigo: [email protected]
Verifique se está habilitado no PHP.ini o seu postgreSql.
;extension=php_pdo_pgsql.dll
retire o ; da frente da linha no php.ini
Já habilitei isso, mesmo assim continua o erro :/
Nossa cara eu disse ;extension=php_pdo_pgsql.dll mas seria para descomentar a linha:
extension=php_pgsql.dll
Sim foi exatamente o que eu fiz, mas não dava certo. Agora mudei para o Xampp, e usei os codigos aqui do tópico. (antes estavo usando o do video) e aconteceu o que acontecia com o Carlos lá em cima nos comentários. A tela fica inteira branca. Já li todos comentarios, nada daqui resolveu.
É como se nada acontece-se mesmo. E está tudo giual ao tópico, ja habilitei lá pra usar só o <? e tudo mais como você já explicou, mas não dá em nada nada.
Estou usando o código assim:
con = @pg_connect(“host=$this->host user=$this->user password=$this->pswd dbname=$this->dbname”);
return $this->con;
}
#método que encerra a conexao
function close(){
@pg_close($this->con);
}
#método verifica status da conexao
function statusCon(){
if(!$this->con){
echo “O sistema não está conectado à [$this->dbname] em [$this->host].”;
exit;
}
else{
echo “O sistema está conectado à [$this->dbname] em [$this->host].”;
}
}
}
?>
No index está assim:
open();
#verificando o status da conexao
$minhaConexao->statusCon();
#encerrando a conexao
$minhaConexao->close();
#verificando a conexao apos close();
$minhaConexao->statusCon();
?>
E meu pgsql no php.ini ja esta sem o “;” e tudo mais. Não sei mesmo o que anda a acontecer.
retire o @ da frente do pg_connect para ver a mensagem de erro e me informe a mensagem.
Continua na mesma, retirei o @ e a tela continua branca. :/
Acho que vale lembrar que estou usando postegre 8.4 com pgadmin 1.10. Há alguma diferença??
Acho que sua index tem algum problema ai, está assim ?
$minhaConexao->open();
$minhaConexao->statusCon();
porque você disse que está assim:
open();
#verificando o status da conexao
$minhaConexao->statusCon();
#encerrando a conexao
$minhaConexao->close();
#verificando a conexao apos close();
$minhaConexao->statusCon();
O método open está perdido aí nesse exemplo que deu…
Tente colocar dados incorretos do banco e retirar o @ porque assim deverá dar erro e exibir na tela, se continuar branco é algum problema no PHP/APache
Ae cara, consegui resolver o problemas qui ^^.
Simplesmente era lá no PHP Extensions, só que no programa easyphp. Aonde clico lá, a caixinha da dll estava desmarcada, mesmo q no php.ini estava sem o “;” lá ela ficava desmarcada.
Bom, tinha esquecido de avisar que esu estava a testar no Xampp, e logo depois mesmo erro no Wamp, mas vi que no video você usava EasyPHP e baixei, e com isso deu certo.
Muito bom blog, e você é bem legal, resolve dúvidas, e olha que o post aqui é antigo. Recebi respostas no mesmo dia. Parabéns pelo trabalho.
Agora uma coisa, vo ter de estudar como fazer agora para exibir informações do banco. Mas seria legal um tutorial novo ai sobre isso em. Ia ajudar bastante ^^
Abrçs e boa sorte o/
Oi Rafael,
Estou usando o EasyPHP está dando erro de Parse Erro : syntax error, T_CLASS na linha 4 , na linha 4 está assim;
include(‘conexao.class.php’);
não estou conseguindo achar o erro poderia me dar uma força
Valew
Rafael,
Funcionou era um erro no parametros ” .
Mto Bom cara o post, poderia depois fazer de cadastros e formularios.
Abraço
Rafael, estou com o mesmo problema de tela em branco no momento da conexão, já vasculhei a net e nada de solução, configurei o phd.ini, o http.conf e nada.
Uso os seguintes programas:
PostgreSQL 8.4.9 instalado em c:postgresql8.4
PHP 5.2.17 instalado em c:PHP
Apache HTTP Server 2.2 instalado em c:Apache
PHP Editor em c:PHP Editor
O apache esta integrado com o PHP e com o PHP Editor, pelo menos o comando phpinfo() exibiu as configuração do PHP.
Porém quando tento a conexão abaixo não aparece nada, nem mesmo erro, tentei colocar senha errada e nada.
banco = $banco;
$this->strCon = “host=$this->host user=$this->user password=$this->pswd dbname=$this->banco”;
}
function Open() {
$this-> = pg_connect($this->strCon);
}
function Close(){
pg_close($this->con);
}
function StatusCon() {
if($this->con){
echo ‘conectado’;
}
else{
echo ‘desconectado’;
exit;
}
}
}
?>
O index.php ficou assim:
Open();
$conexao->StatusCon();
?>
Por favor veja se consegue encontrar algum erro acima. Desde já obrigado!
Para contato via hotmail: “[email protected]” se puder me adicionar vou estar precisando muito de seu axilio.
Ricardo, e quanto as short tags?
Já tentou mudar de <? para <?php
tentei ainda …
<?php
// conexao.inc.php
$str_conexao="host=127.0.0.1 dbname=postgres port=5432 user=postgres password=postgres";
$conexaophp=pg_connect($str_conexao);
if (!$conexaophp){
echo "Houve erro ao conectar ao banco" . pg_last_error();
echo "Informe a mensagem acima ao suporte pelo fone 9999 ou pelo e-mail
[email protected] “;
exit;
}
?>
também retornou tela em branco
Já descomentou a linha:
extension=php_pgsql.dll
no PHP.ini , você tem que descomentar, retirando o ; da frente da linha
outra coisa, coloque em todos os arquivos, na primeira linha a linha que segue abaixo:
error_reporting( E_ALL );
Assim todos os erros serão reportados!
Boa tarde. Vi alguns comentários de pessoas que estão visualizando apenas uma tela em branco. Estava com esse problema e acabei de descobrir que não havia instalado o php5_pgsql, o módulo do Postgres para PHP. Recomendo que tentem isso.
Outro detalhe é sobre a função close. Também não está encerrando a minha conexão. Mas, sobre isso, estamos conectando com o pg_connect e não com o persistente pg_pconnect. Sendo assim, a conexão é encerrada automaticamente após o encerramento do script, tornando a função desnecessária.
Parabéns pelo post, me ajudou muito.
Abraço!
Parabens ! pelo tutorial muito bom ! Tive alguns problemas para configurar o PHP + Postgre mas foi só ativar algumas Dll no PHP.ini copiar 2 para o diretorio de extensões e consegui fazer a conexão com o BD Postgre.
Mas quero pedir uma ajuda.
Tentei fazer um select no index.php e parece que ele não reconhece a instaciação da classe e da um erro. pode dar uma ajuda ?
mandando o script que criei e o erro que recebi :
index.php
<?php
/*
* Created on 02/04/2012
*
* To change the template for this generated file go to
* Window – Preferences – PHPeclipse – PHP – Code Templates
*/
#incluindo a classe conexao (supondo estar no mesmo diretorio)
echo'include da classe.’;
include(‘conexao.class.php’);
echo ‘Instanciar o objeto conexao.’;
#Instanciar o objeto conexao
$minhaConexao = new conexao();
echo ‘Chamada ao metodo open que abra a conexao.’;
#chamada ao metodo open que abra a conexao
$minhaConexao->open();
echo ‘Verificando o status da conexao.’;
#verificando o status da conexao
$minhaConexao->statusCon();
print “Executar consulta a base Postgre –>> SAFWEB”;
$result = pg_query($con, “SELECT situacao, titulo_situacao FROM situacao_condutor”);
if (!$result) {
echo “>> Erro na consulta !”;
exit;
}
while ($row = pg_fetch_row($result)) {
echo “Situação: $row[0] Descrição Situação: $row[1]”;
echo “n”;
}
echo ‘encerrando a conexao.’;
#encerrando a conexao
$minhaConexao->close();
echo ‘verificando a conexao apos close.’;
#verificando a conexao apos close();
$minhaConexao->statusCon();
?>
erro recebido:
include da classe.
Instanciar o objeto conexao.
Chamada ao metodo open que abra a conexao.
Verificando o status da conexao.
O sistema está conectado ao Banco: db_combustivel no Host: 10.72.31.114
Executar consulta a base Postgre –>> SAFWEB
Warning: pg_query() expects parameter 1 to be resource, null given in C:xampphtdocsLearningPHPindex.php on line 25
>> Erro na consulta !
acho que ele não reconheceu a conexão. Como fazer ?
abraço ! aguardo uma dica se possivel.
Basta alterar a linha:
$result = pg_query($con, “SELECT situacao, titulo_situacao FROM situacao_condutor”);
Por:
$result = pg_query(“SELECT situacao, titulo_situacao FROM situacao_condutor”);
Putz! Valeu ! rs To começando agora com o PHP + postgre, estas dicas são fundamentais para agilizar e multiplicar o aprendizado…
Mais uma vez parabens! e continue postando tutoriais e dicas vou estar antenado aqui …
Abraço !
Flw valeu irmão!
obs: procure ler (traduzir) as mensagens de erro, o erro dizia que “pg_query só espera um único parâmetro” e você estava passando 2.
Abs,
kkkkk tens razão e olha que domino bem o ingles.
As vezes o erro ta na cara da gente e na pressa, não enxergamos nada rs
Pior que tava escrito assim, errado tbm no php.net
http://php.net/manual/en/function.pg-query.php
exemplo 1…
deixaram errado lá mesmo?
Lucas, não tem nada errado, acontece que não existe no caso do Fernando, a var $con.
$result = pg_query($con, “SELECT situacao, titulo_situacao FROM situacao_condutor”);
$con não existe no código dele o que existe é
$minhaConexao então seria
$result = pg_query($minhaConexao->con, “SELECT situacao, titulo_situacao FROM situacao_condutor”);
Olá, estou usando o ubuntu 11 e veja se estou certo:
#/etc/php5/apache2$ ls
conf.d php.ini
Tenho de editar o php.ini, porém não acho em qual linha está:
;extension=php_pdo_pgsql.dll
Ricardo, nesse caso seria:
;extension=php_pgsql.dll
Veja também se o postgresql está instalado;
Rafael,
Não sei se pode me ajudar, mas preciso de ajuda de como conectar o banco post gres no sistema zend framework.
Atenciosamente
Aliana
Aliana, creio ser mais fácil você procurar em algum forum Zend, aliás, na documentação Zend.
Mo paia.
Olá,Rafael, muito bom o seu tutorial, porém estou com uma duvida para a criação da classe construtor..
function conecta($bd,$servidor,$porta,$usuario,$senha) {
if($this->bd==”postgresql”) {
$this->id = pg_connect($servidor,$porta,$usuario,$senha,$bd);
}
Onde eu coloco os meus dados do meu banco de dados dentro desta função?
Desculpe, não entendi bem sua pergunta.
Não seria passado ao chamar a função?
conecta(‘fotos’,’localhost’,543,’postgres’,’postgres’);
Estou com problemas para conecta postgre pgadmin III com php poderia me ajuda ?
[email protected]