2012-03-28 4 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' потребует его только в том случае, если он уже не требуется. –

ответ

2

Следующие должны быть в try блоке:

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

У вас это в catch блоке, так что будут выполнены только если есть исключение генерируется.

+0

Прошу прощения за любительскую ошибку! благодаря –

1

Попробуйте обработку свою ошибку, как диктовали here. Это то, как я всегда работал с проблемами PDO.

+0

Круто спасибо, хороший отзыв –

+0

Исключены ли исключения (предпочтительный метод IMHO) зависит от настройки PDO :: ATTR_ERRMODE после установления соединения с базой данных (что я предполагаю, что OP уже настроен). – MrWhite