所以我正在制作一个表格供人们注册,但它不起作用,并且由于某种原因我的netbeans中的调试器无法工作,所以我无法正常检查。
这是html表单
<?php
if(validation_errors() != false)
{
echo '<div class="form-group alert alert-danger alert-box has-error">';
echo'<ul>';
echo validation_errors('<li class="control-label">', '</li>');
echo'</ul>';
echo '</div>';
}
/* form-horizontal */
echo form_open('main/insertInformation');
?>
<div class="form-group">
<input type="text" name="name" class="form-control input-lg" placeholder="Name">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control input-lg" placeholder="Email">
</div>
<div class="form-group">
<input type="text" name="phone" class="form-control input-lg" placeholder="Phone">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control input-lg" placeholder="Password">
</div>
<div class="form-group">
<input type="password" name="password_confirm" class="form-control input-lg" placeholder="Confirm Password">
</div>
<div class="form-group">
<button type='submit' class="btn btn-primary btn-lg btn-block">Sign In</button>
</div>
</div>
然后我尝试将所有这些信息都提供给我的控制器
public function insertInformation(){
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('phone', 'Phone', 'required');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]|max_length[32]');
$this->form_validation->set_rules('password_confirm', 'Password Confirm', 'required|matches[password]');
if ($this->form_validation->run() == FALSE){
$this->load->view('header_view');
$this->load->view('login_view');
$this->load->view('footer_view');
}else{
$data = array(
'name' => $this->input->post('name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'password' => $this->input->post('password')
);
$this->db->trans_begin();
$this->load->model('main_page');
$this->main_page->storeRegisterInfo($data);
$message['account_created'] = 'Your account has been created';
$this->load->view('admin_view', $message);
}
}
这是模型,
public function storeRegisterInfo($data){
$insert = $this->db->insert('new_users',$data);
return $insert;
}
我对codeigniter很新,所以我很确定这里有很多错误,所以请帮助我,请为了更好的理解而逐步解释我。谢谢!
答案 0 :(得分:3)
经过长时间的讨论,特定于此错误,只是您错过了加载模型,您需要加载模型:
$this->load->model('main_page');
更新1:
删除$this->db->trans_begin();
解决了您的问题,但我认为这不是一个完整的解决方案。
如果您想使用交易,请确保您只能将InnoDB
或BDB
表格类型应用于MyISAM
。
如果您正在使用InnoDB并希望使用t rans_begin()
而不是确保在执行所有查询后需要使用trans_commit()
,否则这将不会在您的数据库中显示任何内容。
<强> From the User Guide: 强>
$this->db->trans_begin(); // transaction start
$this->db->query('AN SQL QUERY...');
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback(); // rollback if failure
}
else
{
$this->db->trans_commit(); // commit if success
}
答案 1 :(得分:1)
当我们编写模型文件时,我们有条件集。其中一个是模型文件应该包含_model
的单词。 (例如:user_model
,registration_model
)
所以你的模型也应该改变。现在,您的模型看似main_page
更改了它,(例如:main_model
,page_model
)。
文件名应为Main_model.php
在您的模型中
class Main_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
}
答案 2 :(得分:1)
删除此部分,一切都应该工作
$this->db->trans_begin();