Iso 0 Denunciar post Postado Fevereiro 26, 2007 Pessoas!!Minha excessão não está entrando no catch... está dando erro de primary key mas simplesmente um warning é emitido na tela (Warning: ibase_query() [function.ibase-query]: violation of PRIMARY or UNIQUE KEY constraint "PK_RESERVAS" on table "RESERVAS" in C:\projetos\PHP\eliteweb\reserva\validareserva.php on line 34)Segue o código, na linha ($result = ibase_query($transacao, $sqlins)) é q dá o erro, mas não entra no catch. try { if ($execsql->sql_insert <> ""){ $transacao = ibase_trans(); $sqlins = "insert into RESERVAS ".$execsql->sql_insert. ")". " values ". $execsql->sql_insert_values .")" ; $result = ibase_query($transacao, $sqlins); } } catch (Exception $e) { echo 'exceção: ', $e->getMessage(), "\n";}Precisa configurar alguma coisa diferente no php.ini para um erro de primary key ser considerado um erro e não um warning?Grata,Iso Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Fevereiro 27, 2007 Isso ocorre (ou não ocorre) porque as funções puras do PHP, tipo mysql_*, ibase_*, pg_* NÃO lançam exceções! O catch só "pega" os erros lançados pela clausula "throw", então para você conseguir fazer funcionar da maneira desejada este script você teria que fazer a verificação manualmente e lançar a exceção, ex: try {if ($execsql->sql_insert <> ""){$transacao = ibase_trans();$sqlins = "insert into RESERVAS ".$execsql->sql_insert. ")"." values ". $execsql->sql_insert_values .")";$result = ibase_query($transacao, $sqlins); if(ibase_num_fields($result) < 1) { throw new Exception("Ocorreu o erro XPTO!");}} } catch (Exception $e) {echo 'exceção: ', $e->getMessage(), "\n";} Assim o catch funciona do jeito que você deseja... Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Iso 0 Denunciar post Postado Fevereiro 27, 2007 Olá!!Obrigada por responder.Fiz como você me passou, mas usando esse ibase_num_fields, dá erro e depois entra na excessão. Warning: ibase_num_fields(): supplied argument is not a valid Firebird/InterBase result resource in C:\projetos\PHP\eliteweb\reserva\validareserva.php on line 60exceção: Ocorreu o erro XPTO! Dai tentei fazer assim:try {if ($execsql->sql_insert <> ""){$transacao = ibase_trans();$sqlins = "insert into RESERVAS ".$execsql->sql_insert. ")"." values ". $execsql->sql_insert_values .")";$result = @ibase_query($transacao, $sqlins); if (!$result) { throw new Exception("Ocorreu o erro XPTO!");}} } catch (Exception $e) {echo 'exceção: ', $e->getMessage(), "\n";}Assim funcionou, pode ser assim? ou deveria funcionar o ibase_num_fields?, é q pelo q entendi esse ibase_num_fields retorna a quantidade de fields de query, acho q só é usado para SELECT, ou será q estou equivocada?Muito obrigada pela atenção,Iso Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Fevereiro 28, 2007 Ah sim, tá certo sim!Eu que viajei...Parece que você conseguiu entender como funciona...Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
mauro26 0 Denunciar post Postado Março 20, 2014 Já fiz mas deu outro erro, pus o codigo da seguinte forma: require_once "PagSeguroLibrary/PagSeguroLibrary.php"; if (isset($_POST['comprar'])){ $paymentRequest = new PagSeguroPaymentRequest(); $paymentRequest->addItem('0001', 'Notebook', 1, 25.00); $paymentRequest->setSender( 'Nome do Cliente', 'emailcliente@gmail.com', '11', '9616697951' ); $paymentRequest->setCurrency("BRL"); $paymentRequest->setShippingType(1); $paymentRequest->setReference("I9635"); //Id do produto // Informando as credenciais $credentials = new PagSeguroAccountCredentials( 'meuemail@hotmail.com', 'meutoken' ); try { /* Fazendo uma requisição via API com credenciais incorretas */ $url = $paymentRequest->register($credentials); } catch (PagSeguroServiceException $e) { echo $e->getHttpStatus(); // imprime o código HTTP foreach ($e->getErrors() as $key => $error) { echo $error->getCode(); // imprime o código do erro echo $error->getMessage(); // imprime a mensagem do erro }} } O erro é: Catchable fatal error: Object of class PagSeguroHttpStatus could not be converted to string in /home/mauro/public_html/om/contemia.php on line 37 37 : echo $e->getHttpStatus(); // imprime o código HTTP Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Guima 164 Denunciar post Postado Março 20, 2014 $e->getHttpStatus() retorna um objeto, não "exibível" com echo. Utilize outro modo de exibição. por exemplo, var_dump() ou print_r(). Compartilhar este post Link para o post Compartilhar em outros sites