Duardaum 0 Denunciar post Postado Agosto 9, 2010 Olá pessoal, É que eu to querendo fazer um INSERT em uma tabela e um dos valores tem que ser feito um SELECT em uma tabela do banco. Só que quando eu coloco o valor do campo 'SELECT NEXTVAL('seq_xxx')' (NEXTVAL comando do postgres) não executa no banco, mais quando é direto no banco via phpPgAdmin vai de boa: Exemplo: $INSERT = array( 'codtabela' => (SELECT NEXTVAL('seq_xxx') LIMIT 1) ); $objTabela = new Tabela(); $objTabela->insert($INSERT); Mensagem de erro: Erro ao fazer solicitação: SQLSTATE[22P02]: Invalid text representation: 7 ERRO: sintaxe de entrada é inválida para integer: "SELECT NEXTVAL('seq_tabela')" Alguem sabe como faço esse SELECT???? Compartilhar este post Link para o post Compartilhar em outros sites
Duardaum 0 Denunciar post Postado Agosto 10, 2010 Pode colocar como resolvido que conseguir achar a solução aqui também. Então, vou compartinhar a solução com todo mundo aqui tbm. Problema: * Tinha um problema que era fazer um SELECT dentro de um INSERT no zend pois tinha um campo que seu valor teria que ser capturado em outra tabela dentro do banco ex: $INSERT = array( 'campo01' => "SELECT NEXTVAL('seq_tabela')", 'campo02' => '10' ); $objTabela = new Tabela(); $objTabela->insert($INSERT); Quando eu submetia os dados desta forma, dava erro: Erro ao fazer solicitação: SQLSTATE[22P02]: Invalid text representation: 7 ERRO: sintaxe de entrada é inválida para integer: "SELECT NEXTVAL('seq_tabela')" Bom, Olhando a documentação do ZendFrameWork, descobrir que existe uma classe chamada Zend_Db_Expr, que é uma classe que serve basicamente para você poder usar funções padrão do seu banco de dados na hora de um INSERT, DELETE, UPDATE ou SELECT Exemplo de uso da Classe: Fazer insert na tabela01 inserindo o dia e a hora do insert usando a função CURRENT_DATE() e CURRENT_TIME() do PostgreSql por exemplo: $INSERT = array( 'dia' => new Zend_Db_Expr("CURRENT_DATE()"), 'hora' => new Zend_Db_Expr("CURRENT_TIME()") ) $objTabela = new Tabela01(); $objTabela->insert($INSERT); Simples não?!?!?!? Espero poder ter ajudado. Grato por tudo. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 10, 2010 Com certeza ajudou e vai ajudar muitas outras pessoas no futuro. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites