我有这个代码。
$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-catch块中。我想在查询失败时显示错误。怎么做?
答案 0 :(得分:1)
天真的实施就是这样:
try {
$db = Zend_Registry::get('db');
(...)
$db->query($msg);
}
catch (Exception $e) {
echo "error: " . $e->getMessage();
// maybe close connection also
}
这里虽然你错过了这一点,但只有在抛出异常时才会调用catch子句,这可能不会发生,例如,如果查询返回一个空集,则不会执行catch子句。我不太了解Zend,但是如果插入在失败时抛出异常,那么一切都有意义,如果没有,你应该看看其他方法来处理插入失败。
答案 1 :(得分:0)
你可以试试这个:
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());
}