php - 在 CodeIgniter 类 stdClass 的 CodeIgniter 对象上出现错误无法转换为 CodeIgniter 中的字符串
问题描述
在获取数据库值期间出现以下错误:
遇到 PHP 错误
严重性:4096消息:stdClass 类的对象无法转换为字符串
文件名:控制器/User.php
行号:184
回溯:
文件:>Localdrive:\xampp\htdocs\MyRootFolder\application\controllers\User.php 行:184 功能:_error_handler
文件:Localdrive:\xampp\htdocs\MyRootFolder\application\controllers\User.php 行:151 功能:运行
文件:Localdrive:\xampp\htdocs\MyRootFolder\index.php 行:315 功能:require_once
我的控制器:
public function changePassword()
{
$this->logged_in();
$data['title'] = "Change Password";
$this->form_validation->set_rules('oldpass', 'Current Password', 'required|callback_password_check');
$this->form_validation->set_rules('newpass', 'New Password', 'required');
$this->form_validation->set_rules('passconf', 'Confirm Password', 'required|matches[newpass]');
$this->form_validation->set_error_delimiters('<div class="error">','</div>');
if($this->form_validation->run() == false){
$user= $this->session->userdata('user');
$data['user'] = $user;
$this->load->view('header', $data);
$this->load->view('change_password', $data);
$this->load->view('footer', $data);
}
else{
$email = $this->session->userdata('email');
$newpass = $this->input->post('newpass');
//$this->User_model->update_user($id, $sessArray)
$this->User_model->update_user($id, array('password' => password_hash($newpass), PASSWORD_BCRYPT));
redirect('User/logout');
}
}
public function password_check($oldpass)
{
//print($oldpass);
//exit();
$email = $this->session->userdata('email');
$user = $this->User_model->get_user($email);
print($user);
exit();
//print($oldpass);
//exit();
if(password_verify($oldpass, $user['password']) == true){
$this->form_validation->set_message('password_check', 'The {field} does not match');
return false;
}
return true;
}
我的模型:
function getData(){
$query = $this->db->where('register');
return $query;
}
public function get_user($email)
{
$this->db->where('email', $email);
$query = $this->db->get('register');
return $query->row();
}
public function update_user($email, $sessArray)
{
//$this->db->set($data);
$this->db->where('email', $email);
$this->db->update('register', $sessArray);
}
我的观点:
<div class="row justify-content-center" style="margin-top: 50px;">
<div class="col-4">
<h1><?php echo $title ?></h1>
<?php echo form_open('User/changePassword', array('id' => 'passwordForm'))?>
<div class="form-group">
<input type="password" name="oldpass" id="oldpass" class="form-control" placeholder="Current Password" />
<?php echo form_error('oldpass', '<div class="error">', '</div>')?>
</div>
<div class="form-group">
<input type="password" name="newpass" id="newpass" class="form-control" placeholder="New Password" />
<?php echo form_error('newpass', '<div class="error">', '</div>')?>
</div>
<div class="form-group">
<input type="password" name="passconf" id="passconf" class="form-control" placeholder="Confirm Password" />
<?php echo form_error('passconf', '<div class="error">', '</div>')?>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Change Password</button>
</div>
<?php echo form_close(); ?>
</div>
解决方案
您将数据作为模型中的对象请求,但尝试将其作为数组使用。更改此行:if(password_verify($oldpass, $user->password) == true){
将 fetch 用作对象或将 get_user func 更改return $query->row_array();
为将其用作数组。Ps:用于调试var_dump
,用于数组和对象而不是打印
推荐阅读
- nativescript-vue - RadListView:未知的自定义元素:
- java - 在 PDFMergerUtility 中,是否有任何选项可以忽略错误?
- x86 - 通过分页,我们为每个 4 字节(字)映射虚拟到物理映射。但是我们如何访问该映射中的每个字节呢?
- solr - Solr 核心 schema.xml 在哪里?
- python - 我的 python 多处理代码比串行代码慢
- android - viewmodel 应该包含一些业务逻辑吗?还是创建自己的服务?
- python - CNN error Failed to get convolution algorithm.这可能是因为cuDNN初始化失败,
- mysql - 什么是从表中选择 1=1?
- cassandra - Cassandra 是否与文件服务器位于同一主机上?
- java - 无法设置属性“ctl.start”