美好的一天!
我有这个代码来获取员工的信息。 (单个结果)
控制器:
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;
}
错误:
遇到PHP错误
严重性:警告
消息:为foreach()提供的参数无效
我想做的就是返回特定员工的信息。我不知道为什么会出现这个错误。
请帮忙吗?
谢谢!
答案 0 :(得分:1)
试试这个
控制器:
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;
}
答案 1 :(得分:1)
A PHP Error was encountered Severity: Warning Message: Invalid argument supplied for foreach()
因为$emp_default_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_array();
,无法访问$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";
}
我们可以像这样重新生成此错误,例如
$ php -r 'foreach(null as $e){}'
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1
/*false OR FALSE*/
$ php -r 'foreach(false as $e){}'
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1
/* Not array */
$ php -r 'foreach("somestring" as $e){}'
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1
答案 2 :(得分:0)
row_array()
返回结果数组。
查看:
echo $id = $row['id'];
echo "<br/>".$lname = $row['lname'];
echo "<br/>".$fname = $row['fname'];
echo "<br/>".$mname = $row['mname'];
答案 3 :(得分:0)
您没有使用foreach,因为row_array
仅返回特定行的数组。检查documentation以获取更多信息
echo $id = $row['id'];
echo "<br/>".$lname = $row['lname'];
echo "<br/>".$fname = $row['fname'];
echo "<br/>".$mname = $row['mname'];
答案 4 :(得分:0)
功能row_array
返回The requested row or NULL if it doesn’t exist
。
因此,如果您的查询失败,NULL
将存储在$data["emp_default_info"]
。
你需要将array/object
类型的变量传递给foreach,在你的情况下它可能是NULL
。首先在数据库站点(workbench或phpmyadmin)尝试输出查询。
如果查询成功,它将返回一行(单行)。因此,您可以像
一样循环foreach($emp_default_info as $val)
{
echo $val;
}
因为它只返回一行你不需要使用循环。你可以访问
它由数组索引直接作为$emp_default_info['id']
等。
答案 5 :(得分:0)
你可以尝试最少的没有。的线条。
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
}
所以不需要添加用于在Model中获取一条记录的代码。它已经存在于父模型中。