Доступ к элементам в объекте массива PHP - PullRequest
0 голосов
/ 08 июня 2018

У меня есть массив записей, извлеченных из базы данных SQL-сервера, который хранится в объекте $ result.Я хотел бы получить доступ к каждому элементу в объекте массива и распечатать его на экране.Как мне этого добиться?Моя попытка ниже

$result = $DB->get_records_sql("SELECT  rawname, ID FROM mdl_tag where tagType = 'institution'"); 
$result = array();
        foreach ($result as $ $value) {
        echo $value;
        );
    }

1 Ответ

0 голосов
/ 08 июня 2018

Вот правильный код:

// Get results from table 'tag', where 'tagtype' matches 'institution', with no sorting and returning fields 'id' and 'rawname'.
$results = $DB->get_records('tag', ['tagtype' => 'institution'], '', 'id, rawname');
foreach ($results as $value) {
    echo $value->rawname;
}

Итак, есть ряд проблем:

  1. Используйте get_records, если вам действительно не нужно использовать get_records_sql.
  2. Если вам нужно необходимо использовать get_records_sql, тогда таблица называется {tag}, а не mdl_tag, иначе вы столкнетесь с проблемами на любом сервере, который использует префикс, отличный от 'mdl_' (например, когдазапуск тестов phpunit или behat).
  3. Запись $ result = array ();непосредственно перед циклическим просмотром результата выбрасывает детали из базы данных и заменяет их пустым массивом
  4. Результаты из get_records (или get_records_sql) представляют собой массив, содержащий объекты, каждый из которых содержит значения для запрошенногополя, поэтому вам нужно получить доступ к отдельному значению, а не пытаться отобразить весь объект
  5. Все поля базы данных в Moodle строчными, поэтому «tagtype» не «tagType», «id» не «ID».
...