Вчера когда я var_dump($this->m_test->result_getGrades());
он дал мне массив [1356], теперь он вернул ноль. Может кто-нибудь помочь мне понять, почему это NULL? Я все еще новичок в PHP и Codeigniter, и мне довольно сложно понять, почему я не могу получить какие-либо данные из моей базы данных.
Я предполагаю причину, почему у меня есть эта ошибка, потому что ($this->m_test->result_getGrades())
нулевой
Обнаружена ошибка PHP
Серьезность: Предупреждение
Сообщение: указан неверный аргумент для foreach ()
Имя файла: views / v_display.php
Номер строки: 7
Кроме того, каковы факторы, почему я не могу получить какие-либо данные из моей базы данных? Для будущих ссылок
Это мой код:
Контроллер 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; ?>
Еще раз, спасибо! 🙂
Есть много недостатков в вашем 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
в вашем соединенииВы должны попробовать это:
Во-первых, вам нужно будет проверить where
пункт.
см. пример ниже:
$this->db->where('name', 'test');
что будет производить WHERE name = 'test'
в запросе MySQL
тогда вы должны поставить заявление о возврате после вашего get()
метод:
$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();
}
Обычно сам дамп запроса сам по себе не возвращает много, но это зависит от того, когда вы его дампите.
<?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-> 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;
в противном случае ваша модель получает данные и ничего с ними не делает.