gpt4 book ai didi

PHP匹配主题表和页表

转载 作者:行者123 更新时间:2023-11-29 23:45:45 25 4
gpt4 key购买 nike

我对 php 比较陌生。我有一个函数可以通过 tableName 获取所有主题。我还有一个函数,我试图获取 subject_id (来自页面表)与主题表 id 匹配的所有页面。

以下是错误和输出:

PDOStatement 对象 ( [queryString] => SELECT * FROM subject ORDER BY id ASC )

Array ( [0] => Array ( [id] => 1 [0] => 1 [menu_name] => 关于我们 [1] => 关于我们 [position] => 1 [2] => 1 [visible] => 1 [3] => 1 ) [1] => Array ( [id] => 2 [0] => 2 [menu_name] => 产品 [1] => 产品 [position] => 2等等等等...

注意:未定义索引:第 39 行/Users/aaronhappe/Sites/php/CMS/includes/db.php 中的 id

fatal error :在第 41 行/Users/aaronhappe/Sites/php/CMS/includes/db.php 中的非对象上调用成员函数 rowCount()

这是代码:

<?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";
}?>

如果我将 $subjects[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>

最佳答案

第一个问题:

Notice: Undefined index: id in ...

数组$tableName2中的索引id未设置,检查是否设置

第二个问题:

Fatal error: Call to a member function rowCount() on a non-object ..

$conn->query() 失败时返回非对象,检查 $result 是否是对象

在您的代码中:

function getAllLinkedId($tableName, $tableName2, $conn) {

// check if index id is set
if( !isset($tableName2['id']) )
return false;

try {
$result = $conn->query("SELECT * FROM $tableName WHERE subject_id = {$tableName2['id']} ORDER BY id ASC");

// check if $result is object
if( !is_object($result) )
return false;

return ($result->rowCount() > 0) ? $result : false;

} catch (Exception $e) {
return false;
}
}

关于PHP匹配主题表和页表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com