Php CodeIgniter:检索单个结果行时出错

Php CodeIgniter:检索单个结果行时出错,php,codeigniter,Php,Codeigniter,你好 我在获取员工信息时使用了此代码。(单一结果) 控制器: public function get_employee_info() { $id = $this->input->post("id"); $data["emp_default_info"] = $this->My_model->get_single_result("SELECT * FROM employees WHERE id = '$id' "); $this->loa

你好

我在获取员工信息时使用了此代码。(单一结果)

控制器

public function get_employee_info()
{
    $id = $this->input->post("id");

    $data["emp_default_info"] = $this->My_model->get_single_result("SELECT * FROM employees WHERE id = '$id' "); 

    $this->load->view("employee_info_view", $data);
}
public function get_single_result($query_statement)
{
    $query = $this->ECS_DB->query($query_statement);
    return $query->row_array();
}
foreach ($emp_default_info as $row)
{
    echo $id = $row->id;
    echo "<br/>".$lname = $row->lname;
    echo "<br/>".$fname = $row->fname;
    echo "<br/>".$mname = $row->mname;
}
型号

public function get_employee_info()
{
    $id = $this->input->post("id");

    $data["emp_default_info"] = $this->My_model->get_single_result("SELECT * FROM employees WHERE id = '$id' "); 

    $this->load->view("employee_info_view", $data);
}
public function get_single_result($query_statement)
{
    $query = $this->ECS_DB->query($query_statement);
    return $query->row_array();
}
foreach ($emp_default_info as $row)
{
    echo $id = $row->id;
    echo "<br/>".$lname = $row->lname;
    echo "<br/>".$fname = $row->fname;
    echo "<br/>".$mname = $row->mname;
}
查看

public function get_employee_info()
{
    $id = $this->input->post("id");

    $data["emp_default_info"] = $this->My_model->get_single_result("SELECT * FROM employees WHERE id = '$id' "); 

    $this->load->view("employee_info_view", $data);
}
public function get_single_result($query_statement)
{
    $query = $this->ECS_DB->query($query_statement);
    return $query->row_array();
}
foreach ($emp_default_info as $row)
{
    echo $id = $row->id;
    echo "<br/>".$lname = $row->lname;
    echo "<br/>".$fname = $row->fname;
    echo "<br/>".$mname = $row->mname;
}
foreach($emp\u default\u info作为$row)
{
echo$id=$row->id;
回显“
”$lname=$row->lname; 回显“
”$fname=$row->fname; 回显“
”$mname=$row->mname; }
错误:

public function get_single_result($query_statement)
{
  $query = $this->ECS_DB->query($query_statement);
  $row = $query->row_array();
  if (isset($row)){
     return $row;
  }
      return array();
}
遇到一个PHP错误

严重性:警告

消息:为foreach()提供的参数无效


我只想返回特定员工的信息。我不知道我为什么会犯这个错误

需要帮忙吗

谢谢大家!

行数组()
返回结果数组

视图:

echo$id=$row['id'];
echo“
”$lname=$row['lname']; echo“
”$fname=$row['fname']; echo“
”$mname=$row['mname'];
您不必使用foreach作为
行数组
仅返回特定行的数组。查看更多信息

echo $id = $row['id'];
echo "<br/>".$lname = $row['lname'];
echo "<br/>".$fname = $row['fname'];
echo "<br/>".$mname = $row['mname'];
echo$id=$row['id'];
echo“
”$lname=$row['lname']; echo“
”$fname=$row['fname']; echo“
”$mname=$row['mname'];
函数
行数组
返回
请求的行,如果请求的行不存在则返回NULL

因此,如果查询失败,
NULL
将存储在
$data[“emp\u default\u info”]

您需要将类型为
array/object
的变量传递给foreach,在您的情况下,它可能是
NULL
。请首先在数据库站点(workbench或phpmyadmin)尝试输出查询

如果查询成功,它将返回一行(单行)

foreach($emp_default_info as $val)
{
    echo $val;
}
因为它只返回一行,您不需要使用循环。您可以访问
它通过数组索引直接显示为
$emp\u default\u info['id']
等。

您可以尝试使用最少的行数

public function get_employee_info()
{
    $id = $this->input->post("id");
    $this->db->where('id', $id);
    $q = $this->db->get('employees');
    $row = array_shift($q->result_array());
    echo $row['fname']; //and so on
}
所以,不需要像您所做的那样添加代码来获取模型中的一条记录。它已经存在于父模型中。

试试这个

控制器:

public function get_employee_info() {
    $id = $this->input->post("id");

    $data["emp_default_info"] = $this->My_model->get_single_result($id);

    $this->load->view("employee_info_view", $data);
  }
型号:

public function get_single_result($id)
{
    $this->db->where("id",$id);
    $query = $this->db->get("employees");
    return $query->result();
}
视图:

foreach ($emp_default_info as $row)
{
    echo $id = $row->id;
    echo "<br/>".$lname = $row->lname;
    echo "<br/>".$fname = $row->fname;
    echo "<br/>".$mname = $row->mname;
}
foreach($emp\u default\u info作为$row)
{
echo$id=$row->id;
回显“
”$lname=$row->lname; 回显“
”$fname=$row->fname; 回显“
”$mname=$row->mname; }
这是因为
$emp\u default\u info
为null或false,或者参数不是数组

因此,您可以执行以下操作:

请更正您的型号代码:

public function get_single_result($query_statement)
{
  $query = $this->ECS_DB->query($query_statement);
  $row = $query->row_array();
  if (isset($row)){
     return $row;
  }
      return array();
}

在视图中验证其数组是否

另外
$emp_default_info
是数组,因为您调用了
行数组(),您不能像
$row->id那样访问

if(is_array($emp_default_info) && !empty($emp_default_info))
{

   foreach ($emp_default_info as $row)
   {
    echo $id = $row['id'];
    echo "<br/>".$lname = $row['lname'];
    echo "<br/>".$fname = $row['fname'];
    echo "<br/>".$mname = $row['mname'];
   }

}else{
      echo "Employee Information not found";
}

嗨,先生,我试过你的密码,但什么也没发生。错误仍然以ArrayRong的形式存在,它返回的是特定行的数组,而不是rows@JigarShah同意,是的,它返回数组我将更改应答错误,但不显示结果。我使用if(isset($row))代替foreach(),如果没有结果,那么您就没有查询结果。请检查
print\r($query->row\u array())
的o/p是什么,先生,尝试了,错误消失了,但没有显示结果。我检查了我的查询,它正在工作。你能打印“\r
$data[“emp\u default\u info”]
并共享吗results@Jorz对不起,兄弟,我错误地输入了我的型号名称
欢迎\u型号
,但现在我替换了,所以现在您可以再试一次,复制控制器并尝试获取结果?意味着
id
不存在,因此,请尝试使用记录中存在的另一个
id
,现在必须编辑我的答案,以便您可以尝试消息:调用未定义的方法CI_DB_mssql_result::array()