试图在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
正在返回true
或false
,你为什么不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 类型值的数组偏移量 [关闭]