在PHP中使用Mysql查找表中是否存在ID

在PHP中使用Mysql查找表中是否存在ID,php,mysql,sql,Php,Mysql,Sql,我有一个表,它记录了进行测试的用户。因为我希望用户只尝试测试一次,所以在允许他参加测试之前,我首先检查他是否进行了测试 尝试测试 现在我使用以下查询 选择Exists从用户id=45的测试中选择用户id 但由于id 45已经存在,它将返回 +---------+ | present | +---------+ | 1 | +---------+ 现在我不知道如何在if-else中使用PDO if(present) echo "You have given test"; els

我有一个表,它记录了进行测试的用户。因为我希望用户只尝试测试一次,所以在允许他参加测试之前,我首先检查他是否进行了测试

尝试测试

现在我使用以下查询

选择Exists从用户id=45的测试中选择用户id

但由于id 45已经存在,它将返回

+---------+
| present |
+---------+
|       1 |
+---------+
现在我不知道如何在if-else中使用PDO

if(present)
   echo "You have given test";
else
   echo "Take test";

即使返回的行是单个的,我是否需要使用while循环遍历行?

否,如果知道始终只有一行,则不需要while循环。在我看来,这在直觉上是显而易见的,但我几乎每天都能看到一个问题包含已知单行的while循环

$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row['present']) {
    echo "You have given test";
} else {
    echo "Take test";
}

如果您知道它是一行,那么您可以执行一个fetch,但是是的,您通常会获取整个结果集。不过我在PDO中使用fetchAll,暂时不需要。:谢谢。但是假设如果返回多行,并且我们使用了您提供的相同代码,那么它会返回什么?第一行的错误或数据?它总是会混淆meEach调用以返回下一行。如果你只叫它一次,你会得到第一排。while循环没有什么神奇之处。它只是重复运行相同的代码。在循环外运行某个东西只运行一次,就像循环的第一次迭代一样。是的,我知道,但因为我今天刚从mysql迁移到PDO,所以有点混乱。这与mysql和PDO无关。这只是对循环如何工作的基本理解。而$var=somefunc的工作原理是一样的,不管somefunc是什么。
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row['present']) {
    echo "You have given test";
} else {
    echo "Take test";
}