2017-07-03 85 views
1

我試圖在PHP這個SQL查詢來獲取的計算值:$sql = "SELECT SUM(amount) as IncomeSum FROM income WHERE year = " . $year;在運行PHP PDO的語句返回布爾(假)

的我嘗試這個功能與PDO獲取結果:

function getDatafromDB($query, $columnName){ 
    require 'db.php'; 

    try { 
     $pdo = new PDO("mysql:host=localhost;dbname=$db_name", $db_user, $db_pass); 

     $statement = $pdo->prepare($query); 
     $retValue = $statement->fetch(PDO::FETCH_ASSOC); 
     var_dump($retValue); 

     return $retValue[$columnName]; 
    } catch (PDOException $e) { 
     $error = "Error!: " . $e->getMessage() . "<br/>"; 

     return $error; 
     die(); 
    } 
} 

我這樣調用該函數:

$sql = "SELECT SUM(amount) as IncomeSum FROM income WHERE year = " . $year; 

$retValue = getDatafromDB($sql, "IncomeSum"); 

但是,當我var_dump($retValue)在功能上面我總是得到

布爾(假)

作爲結果。

在我的思維中,別名是否存在問題或其他問題?

+3

您是否想過'執行()'準備好的查詢? – AbraCadaver

+0

@AbraCadaver你的意思是'execute()'而不是'fetch()'? – Fabian

+0

否...準備,執行然後獲取。見例子http://php.net/manual/en/pdostatement.fetch.php – AbraCadaver

回答

4

您需要在fetch()之前執行()。

$statement = $pdo->prepare($query); 
$statement->execute(); 
$retValue = $statement->fetch(PDO::FETCH_ASSOC); 

請閱讀documentation中的代碼示例。