-3

IF ELSE条件を使用してMysqlでPHPで簡単なプログラムを実行しようとしています

私のコードは IF 部分を実行していますが、Else は実行していません

私を助けてください、これが私のコードです

<?PHP


$userInputEntities = htmlentities($userInput);
echo $userInputEntities;

$username = "admin";
$password = "1234565";
$database = "tele";
$server = "localhost";
$db     = new PDO (
    "mysql:host=$server;dbname=$database", 
    "$username", 
    "$password");
$id     = $_REQUEST['cid'];
if ($db) {
    $SQL = $db->prepare("SELECT * FROM user WHERE uid = :id");
    $SQL -> execute(array(':id'=>$id));
    while ($row = $SQL->fetch(PDO::FETCH_ASSOC)) {
        if ($id=="$row[uid]") {
            echo "Welcome";
        } else {
            echo "Sorry You Have not registered with our service";
        }
    }
}

& マイ データベース テーブルは「ユーザー」です

  uid           name
   1            Manoj
   2            pranay   only two rows i have in table

ユーザーがテーブルに入力できる場合は if 部分を出力し、ユーザーが見つからない場合は else 部分を出力する必要があります 助けてください、ありがとう

ここでは、IF 条件が満たされたときに If 部分が印刷されますが、If 条件が失敗したときに else 部分が印刷されません

4

2 に答える 2

2

whileクエリが空のセットを返す場合 (指定された を持つユーザーが DB に存在しない場合)、ブロック全体は実行されませんid。したがってelse、このブロックに配置しても意味がありません。bodywhileが入力された場合、$id常に等しくなります$row['uid']- それは句で設定された条件WHEREです。覚えておいてください。

代わりに行数を確認し、それに基づいてコードを分岐し、whileブロック全体を次のように置き換える必要があります。

$sql = $db->prepare("SELECT * FROM user WHERE uid = :id");
$sql->execute(array(':id'=>$id));
if ($sql->rowCount()) { 
  echo "Welcome";
}
else {
  echo "Sorry, you Have not registered with our service";
}

別の方法は、クエリ ( SELECT COUNT(*) ...) を変更して、行全体ではなくカウントを返すようにし、その値を 0 と照合することです。

于 2012-12-22T13:58:04.503 に答える
0

次のようになります。

$_REQUEST['cid']

以下と同じように解決されます:

"$row[uid]"

つまり、else 条件 (最初の条件が 2 番目の条件と等しくない) が満たされることはありません。

このような状況で、変数の値がわからない場合や、コードが期待どおりに機能しているかどうかを比較するために変数の値をエコーするのが好きです。そうすれば、2 つの変数について何が比較されているかを明示的に確認できます。

于 2012-12-22T14:01:43.033 に答える