未定义变量:mysql PHP中的名称

未定义变量:mysql PHP中的名称,php,mysql,undefined,Php,Mysql,Undefined,如果登录详细信息错误,系统将正确显示登录失败 但如果详细信息正确,系统将在第25行显示C:\Users\Alex\Desktop\OSMAD\8.5\root\Project\test3.php登录失败 这里是PHP文本 <?php $host = "127.0.0.1"; $username = "root"; $password = "usbw"; $dbname = "forum_system"; // Connect to

如果登录详细信息错误,系统将正确显示登录失败

但如果详细信息正确,系统将在第25行显示C:\Users\Alex\Desktop\OSMAD\8.5\root\Project\test3.php登录失败

这里是PHP文本

<?php

    $host = "127.0.0.1";

    $username = "root";

    $password = "usbw";   

    $dbname =  "forum_system";

    // Connect to server
    $connect = mysql_connect($host, $username, $password) 
        or die ("Sorry, unable to connect database server");

    $dbselect = mysql_select_db($dbname,$connect) 
        or die ("Sorry, unable to connect database");

    $Name   = $_POST['Name'];
    $Password = $_POST['Password'];

    $result = mysql_query("select * from users where name = '$Name' and 
        password = '$Password'")
    or die("Sorry, query failed".mysql_error());

    $row = mysql_fetch_array($result);

    if ( $row['Name'] == $Name && $row['Password'] == $Password ) {
        echo "welcome";
    } else {
        echo "Fail login";
    }
?>

MySQL表的列名是区分大小写的。因此,您应该使用$row['Name']和$row['Password']而不是$row['Name']和$row['Password']。所以这句话:

if ( $row['Name'] == $Name && $row['Password'] == $Password ) 
应替换为:

if ( $row['name'] == $Name && $row['password'] == $Password )

也可以使用或代替mysql函数。Php 7.0.0中已删除mysql扩展。

我建议您阅读,因为您当前的代码容易出现错误,并且由于检查$row['Password']==$Password。使用entry显示您的表结构,也在其中。。。如果password列是索引的一部分,那么SQL中的password='$password'也可能容易受到定时攻击。。因为数据库被设计为尽可能快地返回,尤其是索引。。您需要从name='name'的用户中选择密码,然后选择。。不管列名是否被索引,因为它是安全的。在db中,所有列名看起来都是小写的,在php中,你使用了后一个大写字母,就像SQL注入的美味脚本:P