【问题标题】:Pass Value From Controller to Model CodeIginter Using Stored Procedure使用存储过程将值从控制器传递到模型 CodeIginter
【发布时间】:2019-01-24 06:40:12
【问题描述】:

我对 Codeigniter 有疑问。我尝试将值从视图传递到控制器并且它有效。但是当它从控制器传递到模型时会出现问题。它没有向 View 返回任何值。

这是我的控制器:

 public function Edit2G() {
                $id = $this->uri->segment(3);
                $this->load->model("main_model");
                $data['fetch_data_2G_where'] = $this->main_model->fetch_data_2G_id($id);
                $data['id'] = $id;
                $data['title'] = "Update Data 2G";

                $this->load->view('templates/header');
                $this->load->view("pages/Update2G", $data);
                $this->load->view('templates/footer');
            }

这是模型

 function fetch_data_2G_id($id)
     {
         $get_2G_data_stored_proc = "CALL Get_2G_Data(?)";
         $data = array( 'id' =>$id);
         $query = $this->db->query($get_2G_data_stored_proc, $data);
         $result = $query->result_array();
         return $get_2G_data_stored_proc;
     }

这是我的观点

<h2 align="center"><?=$title ?></h2>
<h3 align="center"><?=$id ?></h3>
<p align="center"><?php echo $fetch_data_2G_where['id'];?></p> //This is a test
<?php echo form_open('posts/update'); ?>
<input type="hidden" name="id" value="<?php //echo $fetch_data_2G_where['id']; ?>">
<div class="form-group">
    <label>Site ID</label>
    <input type="text" class="form-control" name="title" placeholder="add title" value="<?php //echo $fetch_data_2G_where['site_name'];?>">
</div>

这是存储过程的结果

id, id_site, site_name, bsc_name, bcf_id, vlan1, vlan2, status,status_vlan  

'1', 'COK008', 'Combat Batylon754','FBTIMIKA-1','BCF-0112', '3677', '3137', '', 'Metro E'

这是我得到的错误

遇到 PHP 错误 严重性:警告

消息:非法字符串偏移 'id'

文件名:pages/Update2G.php

行号:3

回溯:

文件:C:\xampp\htdocs\DapotTimika\application\views\pages\Update2G.php 行:3 函数:_error_handler

文件:C:\xampp\htdocs\DapotTimika\application\controllers\Pages.php 行:46 功能:查看

文件:C:\xampp\htdocs\DapotTimika\index.php 行:315 功能: 需要一次

我错过了什么?

PS:存储过程只有一个参数(id)来返回/获取数据

【问题讨论】:

  • 您要从数据库中获取什么?表名?
  • 所有整个表格行
  • 您的查询实际上不起作用。
  • 这行代码的意义何在? $get_2G_data_stored_proc = "CALL Get_2G_Data(?)";
  • 是的,也许这就是问题所在。我想将一个动态变量输入到存储过程参数中。我用谷歌搜索这是我发现的最好的。你有什么建议吗?

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

在您的控制器 print_r 中的以下行

$data['fetch_data_2G_where'] = $this->main_model->fetch_data_2G_id($id);
echo "<pre>"; print_r($data['fetch_data_2G_where']);

只是为了看看您的查询返回的结果是什么。然后根据您的结果,您可以分析并获得所需的结果。

【讨论】:

    【解决方案2】:

    谢谢大家的回答,我找到了答案。

    我忘记将模型的返回值解析为数组。模型和控制器中的代码很好。

    这是我的视图代码

    <?php
            if($fetch_data_2G_where->num_rows() > 0)
            {
                foreach($fetch_data_2G_where->result_array() as $data)
                {
            ?>
    
                <input type="hidden" name="id" value="<?php echo $data['id']; ?>">
                <div class="form-group">
                <label>Site ID</label>
                <input type="text" class="form-control" name="site_id" value="<?php echo $data['id_site'];?>">
    <?php } ?>
    

    这是结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多