PHP登录-mysql_fetch_数组返回NULL
我试图获得一个简单的帐户登录设置和功能;然而,当运行我的“登录”功能时,我似乎一直在点击“不成功登录” 我使用var_dump函数试图定位问题,并看到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($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说得很好。这将是一个更大的问题