SQL计数不能从PHP代码内部工作

时间:2015-04-12 18:56:52

标签: php mysql phpmyadmin

我有一个最奇怪的问题。 COUNT()不能在我的PHP代码中运行,但它在PHPMyAdmin数据库的SQL输入空间中工作。例如,如果我使用以下查询:

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有问题吗?如果您不明白我的要求,或者您想了解更多信息,请发布。

1 个答案:

答案 0 :(得分: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];
}