0

MySQLデータベースにデータがあります

「1」、「デモ」、「デモ1」、「テスト」

行'echo$ row [2]'で、エラー「通知:未定義のオフセット:2」が表示されます。

任意の解決策..?? PHPコードは以下の通りです...

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>
    <?php

    $uname=$_POST['txtUserName'];
    $passwd=$_POST['txtPassword']; 

    $query="SELECT usernm,passwd FROM tbuserdemo WHERE usernm='$uname'";
    $result=  mysql_query($query);
    $rows=  mysql_num_rows($result); 

    if($rows==0)
    {
        echo "User Name is Wrong";
    }
    else
    {
        $row=mysql_fetch_row($result);
        $encpasswd=  encrypt(1, $passwd);        


        if ($row[1]==$encpasswd)
        {            
            echo "Welcome $uname";
            echo $row[2];
        }
        else
        {
            echo "Password is Wrong";
        }
    }


    ?>
</body>
</html>
4

6 に答える 6

3

データベースからフェッチしているのは2つのフィールドのみであるため、値を持つと値をSELECT usernm,passwd持つ必要があります。配列インデックスはゼロベースです。$row[0]$row[1]

于 2013-02-12T21:31:04.147 に答える
0

プログラミングへようこそ。多くの言語がこれを行います。配列インデックスは0NOTで始まります1。だからあなたはする必要があります

if ($row[0]==$encpasswd)
        {            
            echo "Welcome $uname";
            echo $row[1];
        }
于 2013-02-12T21:31:05.947 に答える
0

$row[0]となるでしょう$row[1]。PHPの配列はゼロベースであることを忘れないでください。$ row [2]を取得するには、クエリで3つのフィールドを選択する必要があります。

于 2013-02-12T21:31:19.303 に答える
0

これに変更:

   if ($row[0]==$encpasswd)
    {            
        echo "Welcome $uname";
        echo $row[1];
    }
    else
    {
        echo "Password is Wrong";
    }
}


?>

配列の最初のインデックスは場所0(1ではない)にあります

于 2013-02-12T21:31:44.100 に答える
0

配列は0で始まります。

これを試して:

    if ($row[0]==$encpasswd)
    {            
        echo "Welcome $uname";
        echo $row[1];
    }
    else
    {
        echo "Password is Wrong";
    }
于 2013-02-12T21:32:06.013 に答える
0

SQLインジェクション攻撃について少し読んでおくとよいでしょう。少なくとも、そのコードを開発/テスト環境の外部に公開する場合。

于 2013-02-12T21:37:38.790 に答える