我使用SELECT COUNT(*)
来验证用户是否存在PHP PDO和MySQL。我也希望得到一个特定的列值。每个用户只有一个值/行或没有值/行。
我试图做这样的事情:
$stmt = $link->prepare('SELECT COUNT(*) AND column FROM table WHERE user=:user');
我希望得到的是1和列值。然后我可以将列值绑定到变量。
如果没有,我必须首先执行SELECT COUNT(*)
,然后在验证SELECT COUNT(*)
查询中的用户和此列是否存在后再执行另一个查询以获取列名。
答案 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();