尝试访问 null sql 类型值的数组偏移量错误
Trying to access array offset on value of type null sql error
我的 table 中有一个名为 "verified" 的布尔列。我正在尝试检查 verified 是否等于 0 "false",如果是,我想显示我的错误。这是代码行
// If User Click the Login Button
if(isset($_POST['logbtn'])){
$username = $_POST['username'];
$password = $_POST['password'];
$verified = "";
$sql = "SELECT * FROM users WHERE verified=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('b', $verified);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
$_SESSION['verified'] = $user['verified'];
if($_SESSION['verified'] == 0){
$errors['verified'] = "Please verify your Email";
}
我没有检查列是否为 0,而是收到错误 "Trying to access array offset on value of type null"
您可以使用 if (empty($_SESSION['verified']))
因此,如果 $user['verified']
的值为 0 / null / 空字符串 / false
,它将 return 为真
您没有向我们显示完整的错误消息,但问题很可能是没有从数据库返回记录。您应该检查单个用户记录。
if (isset($_POST['logbtn'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
if ($user = $result->fetch_assoc()) {
$_SESSION['verified'] = $user['verified'];
} else {
// There is no such user in the database.
$_SESSION['verified'] = false;
}
if (!$_SESSION['verified']) {
$errors['verified'] = "Please verify your Email";
}
}
我更改了您的 SQL 以获取仅与该用户名匹配的记录(假设它是唯一的用户标识符),然后我检查是否从数据库中获取了任何内容。我还将 mysqli 类型更改为 s
因为在这种情况下你不应该使用二进制类型。
我的 table 中有一个名为 "verified" 的布尔列。我正在尝试检查 verified 是否等于 0 "false",如果是,我想显示我的错误。这是代码行
// If User Click the Login Button
if(isset($_POST['logbtn'])){
$username = $_POST['username'];
$password = $_POST['password'];
$verified = "";
$sql = "SELECT * FROM users WHERE verified=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('b', $verified);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
$_SESSION['verified'] = $user['verified'];
if($_SESSION['verified'] == 0){
$errors['verified'] = "Please verify your Email";
}
我没有检查列是否为 0,而是收到错误 "Trying to access array offset on value of type null"
您可以使用 if (empty($_SESSION['verified']))
因此,如果 $user['verified']
的值为 0 / null / 空字符串 / false
您没有向我们显示完整的错误消息,但问题很可能是没有从数据库返回记录。您应该检查单个用户记录。
if (isset($_POST['logbtn'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
if ($user = $result->fetch_assoc()) {
$_SESSION['verified'] = $user['verified'];
} else {
// There is no such user in the database.
$_SESSION['verified'] = false;
}
if (!$_SESSION['verified']) {
$errors['verified'] = "Please verify your Email";
}
}
我更改了您的 SQL 以获取仅与该用户名匹配的记录(假设它是唯一的用户标识符),然后我检查是否从数据库中获取了任何内容。我还将 mysqli 类型更改为 s
因为在这种情况下你不应该使用二进制类型。