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

更改为:

   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

欢迎编程。许多语言都这样做,数组索引从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] 您必须在查询中选择三个字段。

于 2013-02-12T21:31:19.303 回答
0

您可能想了解一下SQL 注入攻击。至少如果您打算在开发/测试环境之外发布该代码。

于 2013-02-12T21:37:38.790 回答