2012-03-28 121 views
0

任何人都可以发现我可能会在下面的代码出错吗?从PDO语句输出

<?php 

    //MySQL Database Connect 
    require 'config.php'; 
    $unitFrom = "kilogram"; 
    $unitTo = "gram"; 
    $units = "9000"; 

    try{ 
    require 'config.php'; 
    $stmt = $dbh->prepare('CALL sp_get_conversion(:in_unit_from, :in_unit_to, :in_amount, @out_amount)'); 
    $stmt->bindParam(':in_unit_from',$unitFrom,PDO::PARAM_STR,4000); 
    $stmt->bindParam(':in_unit_to',$unitTo,PDO::PARAM_STR,4000); 
    $stmt->bindParam(':in_amount',$units,PDO::PARAM_STR,4000); 
    $stmt->execute(); 
    } 
    catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 

    $conversion = $dbh->query("SELECT @out_amount")->fetchColumn(); 
    echo $conversion; 

    } 
?> 

当我在phpMyAdmin运行存储过程,它工作正常,但没有什么是回荡时,我尝试上面的代码。

感谢

+0

不需要两次请求相同的文件。使用'require_once(“config.php”);'在这种情况下'确保第二个'require_once'只需要它,如果它已经不需要了。 – 2012-03-28 13:27:42

回答

2

下应该在try块:

$conversion = $dbh->query("SELECT @out_amount")->fetchColumn(); 
echo $conversion; 

您现在有它在catch块,它只会如果生成异常得到执行。

+0

这是对不起业余的错误!谢谢 – 2012-03-28 13:25:14

1

尝试处理您的错误所决定here。这是我一直与PDO问题合作的方式。

+0

非常感谢,不错的提示 – 2012-03-28 13:27:58

+0

在建立数据库连接(我认为OP已经设置)后,是否引发异常(首选方法恕我直言)取决于PDO :: ATTR_ERRMODE的设置。 – MrWhite 2012-03-28 13:29:20