通常我会返回一个带有关于我的函数状态的消息的JSON,如果错误或成功,但是,这次,我遇到了麻烦。我正在使用PHP开发一个应用程序来注册学生加入大学,数据库有很多表来插入关于学生的数据,例如,父母,学生地址,学生课程,课程价值等等,所以,在用户填写所有表单字段并按提交后,我做了很多插入和更新,比如在不同的表中插入10个,我的问题是,如何在所有这些操作之后返回状态消息,如果我的一个插入失败,我如何处理它以向用户提供有关此的反馈?我是CodeIgniter的新手,这里有一个关于如何在控制器的保存功能中执行插入操作的示例:
$studentData = array(
'FIELD1' => $data1,
'FIELD2' => $data2,
'FIELD3' => $data3
);
$this->mymodel->insert('STUDENTTABLE', $data);
我在上面做了很多插件。如何返回每个插入的反馈,并在我的保存功能的最后返回成功消息?
答案 0 :(得分:0)
// Set flash data in your controller
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as
redirect("admin/signup");
// Get Flash data on view in view page
$this->session->flashdata('message_name');
如需更多参考,请访问:this
答案 1 :(得分:0)
有许多技术可以让您知道您是否成功插入。
您可以使用此$this->db->affected_rows()
函数在查询后知道它将返回受影响的行。你可以简单地使用if条件进行检查。
return ($this->db->affected_rows() != 1) ? false : true;
$this->db->insert_id();
此函数会返回最后插入的ID,因此您可以进行进一步编码。
查找查询执行结果的最佳方法是交易。我在这里没有添加太多描述,因为您可以在CodeIgniter的用户指南中找到它。这是link。我只是添加一个例子,这样你就可以了解它。
$this->db->trans_begin();
// Your query
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
}
else
{
$this->db->trans_commit();
}
我个人更喜欢insert
和update
查询的交易。如果要添加多个数据或对数据库执行多个活动,这将非常有用。
现在将消息传递给视图。
如果你使用上面的技术并从模型到控制器返回true或false,那么根据它就很容易得到消息。
我正在为您添加样本模型,控制器和视图代码。
public function your_model_function(){
// Do query
// Return TRUE or FALSE
}
public function your_controller_function(){
$data = $this->input->post(); // Your post data. You can use get also.
$result = $this->your_model->your_model_function($data);
//Normal Pass the variable to the view [OPTION-1]
if($result == TRUE){
$msg = "Successfully Insert.";
}else {
$msg = "Failed To Insert.";
}
$this->load->view('your_view',['msg'=>$msg]); // Change this code as per your requierment.
//Now For Flash Data [OPTION-2]
if($result == TRUE){
$this->session->set_flashdata('feedback', 'Successfully Insert.');
}else {
this->session->set_flashdata('feedback', 'Failed To Insert.');
}
//redirect to your page
return redirect('your_controller/your_controller_function'); // Change this code as per your requierment.
}
查看[选项-1]
<?php echo $msg; ?>
//OR
<?php print_r($msg); ?>
查看[选项-2]
<?php
if ($feedback = $this->session->flashdata('feedback')){
echo $feedback;
}
?>