如何解决当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 举报,一经查实,本站将立刻删除。