我正在使用以下代码。当查询崩溃时,它不会显示我在“catch”块中定义的ALERT。
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once("../Lib/dbaccess.php");
//Retrieve values from Input Form
$CategoryName = $_POST["inCategory"];
$TotalMembers = $_POST["inTotalMembers"];
$Details = $_POST["inDetails"];
$CategoryName = $_POST["inCategory"];
$Chairman = $_POST["inChairman"];
$InsertQuery = "REPLACE INTO electioncategorymaster (ecname, ecdescription, ectotalmembers, ecchairman, lastupdated) VALUES ('".$CategoryName."','".$Details."',".$TotalMembers.",'".$Chairman."',now())";
try
{
$Result = dbaccess::InsertRecord($InsertQuery);
}
catch(exception $ex)
{
echo "<script type='text/javascript'>alert('".$ex."');</script>";
}
?>
答案 0 :(得分:7)
如果您想获得异常消息,请使用:
$ex->getMessage();
不仅$ex
。
此外,你应该转义该字符串中的引号,以确保有一些有效的Javascript字符串 - addslashes可能有帮助,在这里。
如果这不会改变一件事:
另外,如果你想获得异常的完整堆栈跟踪,你可能想要使用这样的东西,而不是做一个JS alert
:
echo '<pre>';
var_dump($ex);
echo '</pre>';
而且,一如既往:在开发服务器上安装优秀的Xdebug extension可以提供很多帮助; - )
答案 1 :(得分:1)
为了将来参考,当从PHP输出值到JavaScript时,通常最好只使用json_encode
。这样就无需将其封装在引号中并将其转义。