昨天当我var_dump($this->m_test->result_getGrades());
它给了我一个数组[1356]现在它返回null。任何人都可以帮我弄清楚它为什么是空的?我仍然是PHP和Codeigniter的新手,并且非常紧张地弄清楚为什么我无法从我的数据库中检索任何数据。
我假设我有这个错误的原因是因为($this->m_test->result_getGrades())
为NULL
遇到PHP错误
严重性:警告
消息:为foreach()提供的参数无效
文件名:views / v_display.php
行号:7
另外,为什么我无法从数据库中检索任何数据?供将来参考
这是我的代码:
Controller c_test.php
function getGrades() {
$data['query'] = $this->m_test->result_getGrades();
$this->load->view('v_display', $data);
}
模型m_test.php
function result_getGrades()
{
$this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
$this->db->from('grades');
$this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
$this->db->join('subjects','subjectblocking.subjectcode=subject.subjectcode');
$this->db->where('2013-F019');
$query=$this->db->get();
}
观看v_display.php
<?php foreach ($query as $row): ?>
<?php echo $row->studentid;?><br>
<?php echo $row->subjectcode;?><br>
<?php echo $row->description;?><br>
<?php echo $row->final;?><br>
<?php endforeach; ?>
再次感谢你! :)
答案 0 :(得分:3)
你应该试试这个:
首先,您需要检查where
条款。
见下面的例子:
$this->db->where('name', 'test');
将在MySQL查询中生成WHERE name = 'test'
然后你必须在get()
方法之后放一个return语句:
$query = $this->db->get();
return $query->result_array();
所以你的模型应该是这样的:
function result_getGrades()
{
$this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
$this->db->from('grades');
$this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
$this->db->join('subjects','subjectblocking.subjectcode=subject.subjectcode');
$this->db->where('name of field', '2013-F019');
$query=$this->db->get();
return $query->result_array();
}
答案 1 :(得分:1)
result_getGrades()
功能中存在许多错误:
function result_getGrades()
{
$this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
$this->db->from('grades');
$this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
$this->db->join('subjects','subjectblocking.subjectcode = subjects.subjectcode');
$this->db->where('your_field', '2013-F019');
$query = $this->db->get()->result();
return $query;
}
有:
添加return $query;
field name
subject
至subjects
答案 2 :(得分:1)
var转储查询本身通常不会为我返回太多,但这取决于你何时转储它。
<?php foreach ($query as $row): ?>
<?php echo $row->studentid;?><br>
<?php echo $row->subjectcode;?><br>
<?php echo $row->description;?><br>
<?php echo $row->final;?><br>
<?php endforeach; ?>
为此你不需要继续打开和关闭php标签,除非你想要很多html:
<?php foreach ($query as $row){
echo $row->studentid.'<br>';
echo $row->subjectcode.'<br>';
echo $row->description.'<br>';
echo $row->final.'<br>';
}?>
注意。 ?它将$ row-&gt; studentid加入到html中,意味着它的代码更清晰。
现在问题是,你在你的foreach中将变量指定为变量......这是没有意义的。谢天谢地,我知道修复。您需要将查询转换为数据库中的结果:
<?php foreach ($query->result() as $row){
echo $row->studentid.'<br>';
echo $row->subjectcode.'<br>';
echo $row->description.'<br>';
echo $row->final.'<br>';
}?>
$query->result() as $row
将使您能够回显从数据库中获取的信息。
同样在模型的最后,您需要添加return $query;
,否则您的模型将获取数据而不对其执行任何操作。