Я относительно новичок в php. У меня есть функция, чтобы получить все предметы с помощью tableName. У меня также есть функция, в которой я пытаюсь получить все страницы, где subject_id (из таблицы страниц) соответствует идентификатору тематических таблиц.Таблица соответствия и таблица соответствия PHP
Вот ошибка и вывод:
PDOStatement Объект ([QueryString] => SELECT * FROM предметов ORDER BY идентификатора ASC)
Array ([0] => Array ([ID] => 1 [0] => 1 [menu_name] => О нас [1] => О нас [позиция] => 1 [2] => 1 [видимо] => 1 [3] => 1) [1] = > Array ([id] => 2 [0] => 2 [menu_name] => Продукты [1] => Продукты [позиция] => 2 и т. Д. И т.д. ...
Примечание: Неопределенный индекс: id in/Пользователи/aaronhappe/Сайты/php/CMS/includes/db.php в строке 39
Фатальная ошибка: Вызов функции члена ROWCOUNT() на не-объект в /Users/aaronhappe/Sites/php/CMS/includes/db.php на линии 41
А вот код:
<?php
// controller file
include '../admin-head-includes.php';
$subjects = getAll('subjects', $conn);
$subjectId = $subjects->fetchAll();
print_r($subjects);
echo "<br>";
echo "<br>";
print_r($subjectId);
$pages = getAllLinkedId('pages', $subjectId, $conn);
view('manage-content', array(
'subjects' => $subjects,
'pages' => $pages,
));
// from my db functions file
function getAllLinkedId($tableName, $tableName2, $conn) {
try {
$result = $conn->query("SELECT * FROM $tableName WHERE subject_id = {$tableName2['id']} ORDER BY id ASC");
return ($result->rowCount() > 0)
? $result
: false;
} catch (Exception $e) {
return false;
}
<!-- standard functions file -->
<?php function view($path, $data = null) {
if ($data) {
extract($data);
}
$path = $path . '.views.php';
include "views/$path";
}?>
Если я передаю $ subject [0] в мою функцию getAllLinkedId, это решает проблему переноса массива на другие массивы. Однако то, что я хочу, это выплевывать для каждого предмета соответствующую страницу. Не только страницы, которые соответствуют одному предмету, но отвечают всем тем.
Это мое мнение:
<div class="subjects">
<ul>
<?php
foreach ($subjects as $subject) {?>
<li>
<?=$subject['menu_name'];?>
</li>
<ul>
<?php foreach ($pages as $page) {?>
<?=$page['menu_name']?>
<?php }?>
</ul>
<?php }?>
</ul>
</div>
Независимо от '$ conn-> query()' is, он не возвратил объект с этим методом. Я предполагаю, что это потому, что '$ subjectId' ссылается на массив массивов, а не на целое число, так что есть либо синтаксическая ошибка запроса (по-видимому, указана надписью прямо над ней), либо нет результата. –
Если вы внимательно посмотрите на свой массив '$ subjectId', вы увидите, что это массив массивов и только числовые ключи. Вероятно, вы хотите использовать одно значение '$ subjectId', например' $ subjectId [0] '. – VMai
VMai - Да, это близко к тому, что я хочу. Только я хочу, чтобы «[0]» был dymanic (что-то вроде $ subject [i]), так что, на мой взгляд, я могу выплюнуть каждую страницу, соответствующую каждому предмету. Передача в $ subject [0] будет выплевывать страницы, принадлежащие $ subject [0]. – AaronHappe