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()