我可以使用SQL同时计算行数并获取列值吗?

时间:2016-04-23 17:58:20

标签: php mysql pdo

我使用SELECT COUNT(*)来验证用户是否存在PHP PDO和MySQL。我也希望得到一个特定的列值。每个用户只有一个值/行或没有值/行。

我试图做这样的事情:

$stmt = $link->prepare('SELECT COUNT(*) AND column FROM table WHERE user=:user');

我希望得到的是1和列值。然后我可以将列值绑定到变量。

如果没有,我必须首先执行SELECT COUNT(*),然后在验证SELECT COUNT(*)查询中的用户和此列是否存在后再执行另一个查询以获取列名。

2 个答案:

答案 0 :(得分:0)

你只需要思考一下。

" COUNT(*)"不是一种特殊的方法"来验证用户是否存在"。它只是一个您选择计数的查询,因为您根本不知道选择其他什么。

但只要你有一个专栏可供选择,你就不再需要了。

因此,只需选择您的值,只要您获得它,就可以告诉用户存在

$stmt = $link->prepare('SELECT column FROM table WHERE user=:user');
$stmt->execute([$user]);
$col = $stmt->fetchColumn();

if ($col) {
    // user exists
    $something = $col; // use $col as you wanted
}

虽然选择count()和没有group by运算符的列是一个棘手的查询,你应该避免它。

答案 1 :(得分:-1)

SELECT count(*), column FROM table where user=:user

这是你想要的吗?

否则你可以计算php中的结果数

$pdo = new PDO('mysql:host=XXX.fr.mysql;dbname=YYYY', 'ZZZ', 'TTT', $pdo_options);

    $response = $pdo->query('SELECT column FROM table');
    $count = 0;
    while ($data = $response->fetch())
    {
        $count++;
    }
    $reponse->closeCursor();