微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有三个表 register、profile 和 uploaddoc 表。在profile表中,我插入了相关注册用户的多条记录,在uploaddoc中,我插入了profile的多条记录。最后,我从配置文件上传文档表中获取最新记录。

我使用以下代码在我的页面获取输出。我正在将配置文件 ID 传递给 uploaddoc 表以获取相关记录。

function profile($reg_id,$pdo){

$query='SELECT * FROM `tbl_profile` WHERE  sp_id=(SELECT MAX(sp_id) FROM tbl_profile where reg_id ='.$reg_id.' GROUP BY reg_id order by reg_id DESC)  and is_active=1';

$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch();

$data['profile']=$row;

if (!empty($row)) {
$query2='SELECT * FROM `tbl_uploadAll` WHERE u_id='.$row['sp_id'].' and is_active=1';
$stmt = $pdo->prepare($query2);
$stmt->execute();
$row2 = $stmt->fetchAll();
$data['uploadedDoc']=$row2;

}

return $data;
}

页面加载时,我正在调用配置文件功能

<?PHP

$info=profile($_SESSION['reg_id'],$pdo);
$info['profile']; // getting single records
$info['uploadedDoc'] // getting the multiple records and displaying using for condition

?>

如果记录在个人资料和上传的文档中可用,那么我正在获取数据并且它正在工作。

现在,我的问题是,如果在与注册 ID 相关的配置文件上传的文档表中没有记录,那么我会收到一个错误

注意:尝试访问数组中的 bool 类型值的偏移量

有什么办法可以解决这个问题吗?

connection.PHP

<?PHP
session_start();

$hostname = "localhost";
$username = "root";
$password = "test";
$db="test";


$charset = 'utf8mb4';

$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,PDO::ATTR_EMULATE_PREPARES   => false,];
$dsn = "MysqL:host=$hostname;dbname=$db;charset=$charset";

try {
        $pdo = new PDO($dsn,$username,$password,$options);
    } 
    catch (PDOException $e) {
        throw new PDOException($e->getMessage(),(int)$e->getCode());
  }

解决方法

我修改了代码:
$query='SELECT * FROM tbl_profile WHERE sp_id=(SELECT MAX(sp_id) FROM tbl_profile 哪里 reg_id =? GROUP BY reg_id order by reg_id DESC) 和 is_active=?'; $stmt = $pdo->prepare($query); $stmt->execute([$reg_id,$is_active]); $row = $stmt->fetch(); $data['profile']=$row; 如果(!空($行)){ $query2='SELECT * FROM tbl_uploadAll WHERE u_id=?和 is_active=?'; $stmt = $pdo->prepare($query2); $stmt->execute([$sp_id,$is_active]); $row2 = $stmt->fetchAll(); $data['uploadedDoc']=$row2; } 返回 $data; }

,

再次尝试将 $pdo 引用为 $pdo = $this->pdo; 那是如果你在同一个类中 $pdo 或使用 __construct

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。