为什么PHP没有显示异常?

时间:2010-01-09 10:29:10

标签: php javascript

我正在使用以下代码。当查询崩溃时,它不会显示我在“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>";
    }
?>

2 个答案:

答案 0 :(得分:7)

如果您想获得异常消息,请使用:

$ex->getMessage();

不仅$ex

此外,你应该转义该字符串中的引号,以确保有一些有效的Javascript字符串 - addslashes可能有帮助,在这里。


如果这不会改变一件事:

  • 你确定抛出了异常吗?
  • 你能看一下你脚本的输出吗? (浏览器中的“查看源代码”)


另外,如果你想获得异常的完整堆栈跟踪,你可能想要使用这样的东西,而不是做一个JS alert

echo '<pre>';
var_dump($ex);
echo '</pre>';

而且,一如既往:在开发服务器上安装优秀的Xdebug extension可以提供很多帮助; - )

答案 1 :(得分:1)

为了将来参考,当从PHP输出值到JavaScript时,通常最好只使用json_encode。这样就无需将其封装在引号中并将其转义。