2015-04-12 78 views
2

我有最奇怪的問題。 COUNT()不在我的PHP代碼中工作,但它在PHPMyAdmin數據庫的SQL輸入空間中工作。例如,如果我用下面的查詢:SQL計數不能從PHP代碼裏面工作

SELECT COUNT(*) FROM posts WHERE category = "coding" 

它將從phpMyAdmin的部分輸入的SQL語句返回正確的結果,但是從PHP代碼,它總是返回1.這是我使用的代碼PHP的:

function numberofposts($category, $connection) { 
    $query = "SELECT COUNT(*) FROM posts WHERE category = :category"; 
    $params = array(':category' => $category); 
    try{ 
     $stmt = $connection->prepare($query); 
     $result = $stmt->execute($params); 
    } 
    catch(PDOException $ex){ 
     echo ("Failed to run query: " . $ex->getMessage()); 
    } 
    return $result; 
} 

echo "Number of Posts: " . numberofposts("art", $connection); 

它是做什麼的頂部,將返回正確的結果的第一個代碼,但在PHP代碼它總是返回1,有一個問題,我的PHP?如果您不明白我在問什麼,或者您想了解更多信息,請發佈。

+0

你正在做一個選擇,你執行的語句,但你不取的結果行。 – jeroen

回答

1

您正在執行select操作並執行該語句,但是您沒有使用結果獲取該行。

你可能想是這樣的:

function numberofposts($category, $connection) { 
    $query = "SELECT COUNT(*) as cnt FROM posts WHERE category = :category"; 
           ^^^ for easy access 
    $params = array(':category' => $category); 
    try{ 
     $stmt = $connection->prepare($query); 
     $stmt->execute($params); 
     $row = $stmt->fetch(); 
    } 
    catch(PDOException $ex){ 
     echo ("Failed to run query: " . $ex->getMessage()); 
    } 
    return $row['cnt']; 
    // if you don't alias the column you can do: 
    // return $row[0]; 
} 
+0

當我嘗試運行你的代碼時,我得到錯誤:「致命錯誤:調用一個非對象的成員函數fetch()」。它表示它在這一行上:「$ row = $ result-> fetch();」。有任何想法嗎? :(謝謝 –

+1

固定!:)問題是$ row = $ result-> fetch()應該是$ row = $ stmt-> fetch()。感謝您的幫助! :) –

+0

@michaeljones良好的捕獲,我忽略了。 – jeroen