0

何を検索すればよいかわからないため、同様の質問があるかどうかはわかりませんが、とにかく。

(テーブルが 1 つある) クエリを実行した後、行が返されたかどうかを確認する方法は 2 つあります。

$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 はその目的のためにあるので、それを使用する必要があると思いましたが、結果セットを保存する必要があるため、わかりません。ありがとうございます。

4

2 に答える 2

1

最初のオプションがおそらく最適です。ところで、php.net から:

クエリが結果セットを返さなかった場合、mysqli_store_result() は FALSE を返します。

この関数は、結果セットの読み取りが失敗した場合にも FALSE を返します。

したがって、次のようにも言えます。

if ($a->store_result()) {
    // do something
}
于 2012-05-25T18:52:13.250 に答える
0

SQLクエリにLIMIT 0,1を追加すると、好みのものを使用できます。しかし、私は最初のものを好みます。

于 2012-05-25T18:49:15.517 に答える