Неверный аргумент, предоставленный для foreach () из-за var_dump, является нулевым

Вчера когда я 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; ?>

Еще раз, спасибо! 🙂

0

Решение

Есть много недостатков в вашем 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 в вашем соединении
1

Другие решения

Вы должны попробовать это:

Во-первых, вам нужно будет проверить 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();
}
3

Обычно сам дамп запроса сам по себе не возвращает много, но это зависит от того, когда вы его дампите.

<?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; в противном случае ваша модель получает данные и ничего с ними не делает.

1
По вопросам рекламы [email protected]