2012-03-28 55 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