PHP 中的“尝试访问 Bool 类型值的数组偏移量”错误
错误“尝试访问 Bool 类型值的数组偏移量”当您尝试访问不存在或无效类型的数组元素(特别是布尔值。
在提供的代码片段中,您正在执行查询来检查数据库中是否已存在用户名或电子邮件。如果查询未返回任何结果,则会将 false 分配给相应的变量($emailRes 或 $nameRes)。
当您尝试访问 $nameRes 或 $emailRes 的用户名或电子邮件键时,您收到错误,因为它们都是布尔值,而不是数组。
解决方案:
1.检查是否存在:
在访问数组偏移量之前,检查数据库是否返回任何结果:
$emailRes = $query->fetch(PDO::FETCH_ASSOC); if ($emailRes) { // Proceed to use $emailRes['Email'] }
2.指定默认值:
如果你不关心数据库是否返回任何内容,可以指定默认值:
$emailRes = $query->fetch(PDO::FETCH_ASSOC); $email = $emailRes['Email'] ?? ''; // Default to empty string
3。使用 PDO 的 fetchColumn() 进行存在性检查:
检查数据库中是否存在的更有效方法是使用 fetchColumn():
if ($query->fetchColumn()) { // Record exists } else { // Record does not exist }
4.一次查询方法:
您还可以在一次查询中检查用户名和电子邮件是否存在:
$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR Email =:Email"); $query->execute([':Username' => $name, ':Email' => $email]); if ($query->fetchColumn()) { // Username or email already exist } else { // Username and email are both available }
以上是为什么我在 PHP 中收到'尝试访问 Bool 类型值的数组偏移量”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!