0

我确实有一个问题:我无法将数据从模型传递到控制器你可以看到我的一些代码,请帮助我。这没用!

这是我的模型“mymodel.php”

 ....

$query = $this->db->query("SELECT * FROM `rand` WHERE `used` = 0 LIMIT 0, 1");
    if($query){
    foreach ($query->result() as $row);
    }
    $t = "EXAMPLE/{$row->code}";
    function wandad() {
        return $t;
    }
.....

这是我的控制器 mycont.php

 ...
 $this->load->model('mymodel');

$data['new'] = $this->Mymodel->wandad();
$this->load->view('myview',$data);
 ...

这是我的观点 myview.php

 ....
 echo $new; 
 .....
4

4 回答 4

1

以下是您的模型中的几个问题

  • 你的 Foreach 函数没有做任何事情
  • $t与不在同一个命名空间wandad()
  • 功能 wandad 未定义到您的模型类中

我不确定你想用wandad()函数得到什么,但这里有一个模式。

function yourFunction()
{
    /* This will return the full query as an array */
    $query = $this->db->query("SELECT * FROM `rand` WHERE `used` = 0 LIMIT 0, 1")->result_array();
    /* Store variable in the same class */
    $this->t = "EXAMPLE/".$query[0]['code'];
/* Close yourFunction() */
}
public function wandad() {
    return $this->t;
}

然后进入你的控制器,改为:

$this->load->model('mymodel');
$this->mymodel->yourFunction();
$data['new'] = $this->mymodel->wandad();
$this->load->view('myview',$data);
于 2012-08-24T21:06:51.807 回答
1

显然你的模型写得不正确,要纠正这个简单的做法

1.) 我在 $t 上设置了一个默认值

2.)我把查询>>循环放在内部函数上

万达

所以一旦从控制器调用它就可以执行

function wandad() {
    $query = $this->db->query("SELECT * FROM `rand` WHERE `used` = 0 LIMIT 0, 1");
    $t = "";
    if($query){

       foreach ($query->result() as $row){
          $t = "EXAMPLE/{$row->code}".'<br>';
       }
     }

    return $t;
    }
于 2012-08-25T09:36:42.297 回答
0

@Touki 他的 foreach 实际上做了一些事情。它将使用查询返回的最后一行设置变量 $row。不是最好的方法……但这是一种方法。更好的是在查询中使用限制。

于 2012-08-25T06:28:06.030 回答
0

您的代码@Ernesto.that 中有一个小错误

foreach ($query->result() as $row){
      $t. = "EXAMPLE/{$row->code}".'<br>';
   }

但是你的代码很简单

于 2012-08-27T07:29:57.330 回答