3

これは私のフォームです:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <form action="register_ajax.php" method="get">
    <input type="text" name="email">
    <input type="submit" value="test">
    </form>
  </body>
</html>

これは私のphpコードです:

<?php
    $dbc = mysqli_connect("localhost","root","*******","continental_tourism") OR die(mysqli_connect_error());
    $email = $_GET['email'];
    $query = "SELECT email FROM customer_info WHERE email = '$email' ";
    $r = mysqli_query($dbc, $query) OR die(mysqli_error($dbc));
    if($r)
        echo "Email address exists!";
    else
        echo "sss";
?>

正しい(dbに存在する電子メール)を入力する$rとtrueになります。しかし、存在しない電子メールを入力すると、それも$r当てはまります。何故ですか?基本的には空集合を検出したいです。どうすればいいですか?

ありがとう!

4

4 に答える 4

14

$rSQL エラーがあった場合にのみ false になります。そうしないと、SELECT ステートメントによって行が返されなくても、常にオブジェクトが返されます。

mysqli_num_rows()返された行数をカウントするために使用します。ゼロは、誰もそのメールアドレスを使用していないことを意味します。

if(mysqli_num_rows($r))
    echo "Email address exists!";
else
    echo "sss"; 
于 2012-04-17T15:45:17.963 に答える
5

mysqli_query()クエリが成功した場合、常に MySQLi 結果リソースを返します。リソースはTRUE、ブール値としてテストされると常に評価されます。

成功したクエリは必ずしも結果を返すものではなく、失敗しなかったクエリです。構文エラーや MySQL サーバー内の処理エラーなどのエラーが発生した場合、クエリは失敗したと見なされます。この場合、クエリは を返しFALSEます。ただし、結果が見つからないクエリでも、成功したクエリです。

mysqli_num_rows()クエリで結果が見つかったかどうかを判断するには、次を使用する必要があります。

<?php
    $dbc = mysqli_connect("localhost","root","longhorn","continental_tourism") OR die(mysqli_connect_error());

    $email = $_GET['email'];

    $query = "SELECT email FROM customer_info WHERE email = '$email' ";

    $r = mysqli_query($dbc, $query) OR die(mysqli_error($dbc));

    if(mysqli_num_rows($r) > 0)
        echo "Email address exists!";
    else
        echo "sss"; 
?>
于 2012-04-17T15:47:17.457 に答える
0

mysqli_query will return a result object on success and false on failure. No rows selected is not considered failure. You can use mysqli_num_rows to check the number of rows returned.

于 2012-04-17T15:48:54.953 に答える
0

$rが真かどうか、および行数が 0 より大きいかどうかをテストする必要があります。

以下の作品:

if ($r and mysqli_num_rows($r) > 0) {

  echo "rows exist"; } else {

echo "rows don't exist";  }
于 2018-08-08T10:47:56.647 に答える