我正在使用一个SELECT COUNT(*)
来验证PHP PDO和MySQL是否存在用户。我还想获得一个特定的列值。每个用户只有一个值/行或没有值/行。
我正在尝试做这样的事情:
$stmt = $link->prepare('SELECT COUNT(*) AND column FROM table WHERE user=:user');
我希望得到的是 1 和列值。然后我可以将列值绑定到变量的位置。
如果没有,我必须先执行SELECT COUNT(*)
,然后在验证用户和此列是否存在后,从SELECT COUNT(*)
查询中获取列名。
你只需要考虑一下。
"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() 和没有按运算符分组的列是一个棘手的查询,但您通常应该避免使用它。
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();