试图在php中访问bool类型值的数组偏移量[重复]

Posted

技术标签:

【中文标题】试图在php中访问bool类型值的数组偏移量[重复]【英文标题】:Trying to access array offset on value of type bool in php [duplicate] 【发布时间】:2021-03-21 11:01:00 【问题描述】:
function Checkactive($active)
$db = new Connect;
$result = '';
if(isset($active))
  if(empty($active))
  else
    $active = stripslashes(htmlspecialchars($active));
      $user = $db -> prepare("SELECT * FROM users WHERE active = :active");
            $user->execute(array(
                'active' => $active
            ));
            $info = $user->fetch(PDO::FETCH_ASSOC);
            if($info['active'] != 'active')     //line 128
              $hash = $this->generateCode(10);
                $upd = $db->prepare("UPDATE users SET active=:hash WHERE id=:ex_user");
                $upd -> execute(array(
                    'hash' => $hash,
                    'ex_user' => $info['id']    //line 133 
                ));
              echo "sucess";
          else 
              echo "failer";
          
    
        
  
return $result;

我试图解决它,但我不能。

注意:尝试访问第 128 行 C:\xampp\htdocs\admin\core\classes\user.Class.php 中 bool 类型值的数组偏移量

注意:尝试访问第 133 行 C:\xampp\htdocs\admin\core\classes\user.Class.php 中 bool 类型值的数组偏移量

function Checkactive($active)
$db = new Connect;
echo "first";

$result = '';
if(isset($active))
  if(empty($active))
  else
    echo $active;
    $active = stripslashes(htmlspecialchars($active));
      $user = $db -> prepare("SELECT * FROM users WHERE actived = :active");
            $user->execute(array('active' => $active)); //remove array('active' => $active).....then it will work normally
            $info = $user->fetch(PDO::FETCH_ASSOC);
            
            var_dump($info);             // still return bool(false) 
          //   if( $info['actived'] == 'active')
          //     $hash = $active;
          //       $upd = $db->prepare("UPDATE users SET actived = :hash WHERE id = :ex_user");
          //       $upd -> execute(array(
          //           'hash' => $hash,
          //           'ex_user' => $info["id"]
          //       ));
          //     echo "sucess";
          // else 
          //   $hash = "two";
          //     var_dump($active);
          //       $upd = $db->prepare("UPDATE users SET actived = :hash WHERE id = :ex_user");
          //       $upd -> execute(array(
          //           'hash' => $hash,
          //           'ex_user' => $info["id"]
          //       ));
          //   var_dump($info);
          //   var_dump($active);
          //     echo "failer";
          // 
      

remove array('active' => $active).....然后就可以正常工作了

【问题讨论】:

这意味着你的$info 正在返回truefalse,你为什么不var_dump($info) 看看发生了什么? 注意:stripslashes() 与此代码完全无关,htmlspecialchars() 用于显示时的 HTML 转义。不要将其用于 SQL 转义。您(正确)使用占位符值,这意味着此代码完全没有意义。 检查execute() 是否成功。它可能失败了。提示:使用$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 开启异常 你为什么要测试$info['active'],你的SQL查询已经选择active = $active #Syscall 你是对的.. 这是一个错误.. 删除它后它可以完美运行 //'active' => $active \\ THANK YOU 【参考方案1】:

$user->fetch(PDO::FETCH_ASSOC) 中有错误,所以它返回 FALSE,而不是数组。

之后,您使用 $info['active']$info['id'] 作为数组,没有结果验证。

【讨论】:

是的,它返回 false。 pla 告诉我如何将其更改为数组。 我不知道是什么错误,它在你的代码中的 Connect::fetch 中,你必须调试它。 remove array('active' => $active).....然后就可以正常工作了 @Syscall 你是对的.. 这是一个错误.. 删除它后它可以完美运行 //'active' => $active \\

以上是关于试图在php中访问bool类型值的数组偏移量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 PHP 7.4 中访问 bool 类型值的数组偏移量

当php中的表中没有记录时,尝试访问bool类型值的数组偏移量

Laravel Newsletter 包错误:尝试访问 bool 类型值的数组偏移量

警告:尝试访问第 41 行 C:\xampp\htdocs\crud\read.php 中 null 类型值的数组偏移量 [关闭]

尝试访问laravel中null类型值的数组偏移量

重复错误:“不再支持带有花括号的数组和字符串偏移量访问语法”与 phpmyadmin