查看mysql中是否返回行的不同方法?

时间:2012-05-25 18:39:38

标签: php mysql mysqli

我不确定是否有类似的问题,因为我不知道该搜索什么,但无论如何。

在我进行查询(有1个表)之后,有两种方法可以检查是否返回了一行:

$a = $members->prepare("select userid from users where userid = ?");
$a->bind_param('s', $_SESSION['token']);
$a->execute();
$a->store_result();
if ($a->num_rows == 1) {
    // do something
}

或:

$b = $members->prepare("select userid from users where userid = ?");
$b->bind_param('s', $_SESSION['token']);
$b->execute();
$b->bind_result($uid);
$b->fetch();
if (isset($uid)) {
    // do something
}

哪一个最好用来查看是否返回了一行?我认为因为num_rows是为了那个目的然后应该使用它,但你必须存储结果集,所以我不确定,谢谢。

2 个答案:

答案 0 :(得分:1)

第一种选择可能是最好的。顺便说一句,来自php.net:

  如果查询未返回a,则mysqli_store_result()返回FALSE   结果集

  

如果读取结果集失败,则此函数也返回FALSE。

所以你也可以说:

if ($a->store_result()) {
    // do something
}

答案 1 :(得分:0)

将LIMIT 0,1添加到sql查询中,您可以使用您喜欢的那个。 但我更喜欢第一个。