Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP登录-mysql_fetch_数组返回NULL_Php_Mysql_Account - Fatal编程技术网

PHP登录-mysql_fetch_数组返回NULL

PHP登录-mysql_fetch_数组返回NULL,php,mysql,account,Php,Mysql,Account,我试图获得一个简单的帐户登录设置和功能;然而,当运行我的“登录”功能时,我似乎一直在点击“不成功登录” 我使用var_dump函数试图定位问题,并看到var_dump($row['username');死亡返回NULL。我觉得问题可能源于我的mysql\u查询或mysql\u fetch\u数组 非常感谢您的帮助 <?php $host = 'localhost'; $database = 'database_name'; $username = 'username

我试图获得一个简单的帐户登录设置和功能;然而,当运行我的“登录”功能时,我似乎一直在点击“不成功登录”

我使用var_dump函数试图定位问题,并看到
var_dump($row['username');死亡返回NULL。我觉得问题可能源于我的
mysql\u查询
mysql\u fetch\u数组

非常感谢您的帮助

<?php
    $host = 'localhost';
    $database = 'database_name';
    $username = 'username';
    $password = 'password';

    // Create connection
    $conn = mysql_connect($host, $username, $password);

    // Check connection
    if ($conn->connect_error) {
        die('Connection failed: ' . $conn->connect_error);
    }

    echo 'Connected successfully. ';

    mysql_select_db($database) or die('Unable to select database. ');

    $signIn = $_POST['signIn'];

    function signIn() {
        // Start session
        session_start();

        // Variables
        $ID = $_POST['username'];
        $Password = $_POST['password'];

        if (!empty($ID)) {
            $query = mysql_query('SELECT * FROM `signin` WHERE username = "$ID" AND password = "$Password"');
            $row = mysql_fetch_array($query, MYSQL_ASSOC);

            // Troubleshooting
            var_dump($row['username']); die;

            if (!empty($row['username']) AND !empty($row['password'])) {
                $_SESSION['username'] = $row['password'];

                echo "Successful login. ";
            } else {
                echo "Unsuccessful login. ";
            }
        }
    }

    if(isset($signIn)) {
        signIn();
    }
?>

问题在于变量插值:

mysql_query('SELECT * FROM `signin` WHERE username = "$ID" AND password = "$Password"');
单引号不会将$ID和$Password扩展到查询中的值,您需要使用双引号:

mysql_query("SELECT * FROM `signin` WHERE username = '$ID' AND password = '$Password'");

既然您似乎在学习PHP和数据库,我建议您学习一些其他的东西,而不是
mysql.*
函数。它们已经被弃用了很长时间,并在PHP7中被删除。尽管仍然存在许多(过时的)教程,但最好使用更新的API,如
MySQLi
PDO
。还有一些关于SQL注入的警告,您的脚本容易受到SQL注入的攻击。它们都具有获取实际错误信息的函数,这些信息解释了为什么无法从查询中获得结果。这可能会告诉您出现语法错误,因为您在
“$ID”
“$Password”
@GolezTrol周围使用了双引号而不是单引号-不完全是这样。这是因为
mysql\u query
中的查询使用单引号,所以PHP将其视为文本,不会插入
$ID
$Password
的值。谢谢@GolezTrol和@andrewsi!我感谢你提供的信息。删除查询中的单引号成功了。@andrewsi说得很好。这将是一个更大的问题