2010-01-09 95 views
1

我正在使用以下代码。当查询崩溃时,它不会显示我在“catch”块中定义的ALERT。为什么PHP不显示异常?

<?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>"; 
    } 
?> 
+4

你确定有抛出的异常吗? – 2010-01-09 10:30:33

+0

有时我注意到SQL查询因语法错误或其他原因失败,但没有显示异常。 – RKh 2010-01-09 11:45:09

回答

7

如果你想获得异常的消息,你应该使用:

$ex->getMessage(); 

而且不仅$ex

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


如果不改变任何事情:

  • 你肯定有一个异常抛出?
  • 你能看看脚本的输出吗? (在你的浏览器“查看源文件”)


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

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

和以往一样:安装伟大Xdebug extension可以有很大的帮助,开发服务器;-)

1

以供将来参考,从PHP输出值的JavaScript时,它通常是最好只使用json_encode上。这消除了将其封装在引号中并将其转义的需要。

相关问题