Php 查询中的错误处理。。。试接块

Php 查询中的错误处理。。。试接块,php,error-handling,try-catch,Php,Error Handling,Try Catch,我有这个密码 $db = Zend_Registry::get('db'); $msg = 'INSERT INTO tablename '; $msg .= '(customer_id, invoice_status_id, invoice_number, invoice_date, type, total_excl, total_incl, parent_invoice_number) '; $msg .= 'VALUES '; $msg .= '('. $customer_id .',

我有这个密码

$db = Zend_Registry::get('db');

$msg = 'INSERT INTO tablename ';
$msg .= '(customer_id, invoice_status_id, invoice_number, invoice_date, type, total_excl, total_incl, parent_invoice_number) ';
$msg .= 'VALUES ';
$msg .= '('. $customer_id .', '. 6 .', '. $this->_getNewInvoiceNumber() .', '. $invoice_date .', '.'3'.', '. $total_excl .', '. $total_incl .', '. $this->invoice_number() .');';
$db->query($msg);

我想把它放在一个试抓块里。我想在查询不成功时显示一个错误。如何做到这一点?

简单的实现是:

try {
  $db = Zend_Registry::get('db');
   (...)
  $db->query($msg);
}
catch (Exception $e) {
  echo "error: " . $e->getMessage();
  // maybe close connection also
}
在这里,尽管您没有抓住要点,但只有在抛出异常时才会调用catch子句,这可能不会发生,例如,如果查询返回一个空集,则不会执行catch子句。我对Zend了解不多,但是如果insert在失败时抛出异常,那么一切都是有意义的,如果不是,您应该考虑其他方法来处理insert失败。

您可以尝试以下方法:

try {
$db = Zend_Registry::get('db');

$msg = 'INSERT INTO tablename ';
$msg .= '(customer_id, invoice_status_id, invoice_number, invoice_date, type, total_excl, total_incl, parent_invoice_number) ';
$msg .= 'VALUES ';
$msg .= '('. $customer_id .', '. 6 .', '. $this->_getNewInvoiceNumber() .', '. $invoice_date .', '.'3'.', '. $total_excl .', '. $total_incl .', '. $this->invoice_number() .');';
$db->query($msg);
}
catch (Zend_Exception $e) {
    die('Something wrong: ' . $e->getMessage());
}
起于