1

大家好,我是 Codeigniter 的新手,我正在尝试获取与从前一页传递的 account_id 相关的所有数据。

我传递了 account_id,但没有传递与 account_id 关联的名称字段。名称字段为空白。

我收到一个错误:

这是我的控制器代码:

function input($account_id = '', $name = ''){
   if((int)$account_id > 0){
      $query = $this->db->select('name', $name);
      $query = $this->db->get_where('db_accounts', array('account_id' => $account_id));

      $data['account'] = $query;
      $data['fname']['value']   = $name;
      $data['faccount_id']['value'] = $account_id;
      $data['name']        = '';
      $data['account_id']  = '';
  }

  $this->load->view('manage/input',$data);      
}

这是我的输入视图表单:

<?php

   $data = array(
          'name'  => $fname['value'],
          'account_id' => $faccount_id['value']
        );

echo '<form action="/manage/edit" method="post" accept-charset="utf-8">';
echo form_hidden($data);

echo $account_id .' Account ID'.
    form_input($faccount_id); 
echo $name .' Name'.
    form_input($fname); 

$data = array('name' => 'submit', 'value' => 'Update Account', 'class' => 'submit');
echo form_submit($data);

  ?>
 <?php echo form_close(); ?>
4

3 回答 3

3

我相信get_where只是准备您的查询

$query->row_array()应该将您的结果作为数组返回

$query = $this->db->get_where('db_accounts', array('account_id' => $account_id));
$result = $query->row_array();

对于您问题的第二部分,似乎发生了很多事情。$name你的函数中的价值是什么input?您实际上是否将值传递给input?确保在您的input函数中设置了该名称,否则它将只是一个空字符串。

于 2013-02-14T14:25:15.533 回答
2

从文档中占用:

$this->db->select() 接受可选的第二个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。如果您需要复合选择语句,这很有用。

所以更换

$query = $this->db->select('name', $name);

$this->db->select('name', $name); // No need to assign it to a variable

然后$this->db->get_where();执行查询并返回您需要从中获取结果的整个查询对象。

$query = $this->db->get_where('db_accounts', array('account_id' => $account_id));
$result = $query->row_array(); //For single row
$result = $query->result_array(); //For more than one row
于 2013-02-15T05:12:00.207 回答
0

在 djjjuk 的帮助下找到了解决方案。

 $query = $this->db->get_where('db_accounts', array('account_id' => $account_id));
   if ($query->num_rows() > 0)
   {
     $row = $query->row_array();

   } 

  $data['account'] = $row;

  $data['fname']['value']   = $row['name'];
  $data['faccount_id']['value'] = $account_id;
  $data['name']        = '';
  $data['account_id']  = '';
}

  $this->load->view('manage/input',$data);      

 }
于 2013-02-14T15:14:09.830 回答