1

以下のif文の条件をどう書けばいいのか、ちょっと悩んでいます。したがって、ID とユーザー名の 2 つの列を持つデータベースがあります。変数 $ID と $Username の両方をデータベースの行と比較する if else ステートメントを書きたいと思います。一致する場合はステートメントを終了させ、一致しない場合は他のコードを }else{ します。だから私はそれが次のようなものになると考えています:

$ID = 5;
$Username = 'Butterdog';
$result = mysqli_query($con,"SELECT * FROM database");
while($row = mysqli_fetch_array($result))
{  
 if  $ID and $Username both match any row in the database { die
 }else{ do some other code }};

したがって、両方の変数をデータベースの各行と比較する条件を記述する方法を考えるのに苦労しています。これは初歩的なものに違いないことはわかっていますが、まだ見つけていないため、検索が無効になりました。

4

3 に答える 3

1
if  ($ID == $row['id'] && $Username === $row['username'] {
    die("found row");
} else {
    // do something else
}

== は予期しない結果をもたらすため、文字列を比較するときは注意してください。'a string' == 0 も true と評価されます。これは、整数と比較すると、任意の文字列が整数に変換されるためです。PHP が文字列を正しく変換できない場合、文字列は 0 として評価されます。したがって、0 は 0 に等しく、これは true と同等です。これはほんの一例です。もう 1 つのアドバイスは、php での命名スタイルに注意することです。他の開発者と一貫性を保つために、キャメルケースまたはアンダースコアを使用し、変数を大文字で始めないでください。最後のアドバイスは、mysql の列名にも注意することです。Linux でのみ大文字と小文字が区別され、Windows では大文字と小文字が区別されないためです。したがって、小文字で名前を付け、アンダースコアを使用してみてください。

于 2013-04-17T04:39:28.257 に答える
1

これを試してください(データベースの列名が id と username であると仮定します

if  ($ID == $row['id'] && $Username == $row['username'] {
    die;
} else {
    // do something else
}
于 2013-04-17T04:21:24.000 に答える
1

クエリで実際の比較を行う方がはるかに簡単 (かつ効率的) です。

$stmt = mysqli_prepare($con, "SELECT TRUE AS row
    FROM db WHERE id = ? AND user = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, "ss", $ID, $Username);
mysqli_stmt_bind_result($stmt, $found);
mysqli_stmt_execute($stmt);

if ($found) {
    exit;
}
else { /* do something else */ }
于 2013-04-17T04:26:19.947 に答える