0

我目前正在创建一个 MySQLi PHP 论坛,并且我在使用 MySQL LEFT JOIN 时遇到了一些问题,我正在尝试使用 set catid 让所有子论坛“加入”,

查询本身在 mysql 工作台中测试时工作正常,我收到了正确的列表。但是每当我尝试将结果放入数组中时,我都会得到 null

我当前的代码看起来像这样

$sql = 'SELECT `c`.`id`, `c`.`name`, `sc`.`id_sub`, `sc`.`name_sub`, `sc`.`catid` 
    FROM `forum_categories` AS `c` 
    LEFT JOIN `forum_subcategories` AS `sc` 
    ON `c`.`id` = `sc`.`catid`';
$stmt = $mysqli->query($sql);
$forum_categories = array();
while($row = $stmt->fetch_array(FETCH_ASSOC))
{
   // define forum category
$forum_categories[$row['id']] = array(
    'title' => $row['name'],
);

    // add forums to category
$forum_categories[$row['id']]['forum_subcategories'][] = array(
    'id' => $row['id_sub'],
    'title' => $row['name_sub']
);
}

var_dump ($row->name);

但是 var_dump 只返回 null。

这就是 var_dump($stmt); 返回

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(5) ["lengths"]=> NULL ["num_rows"]=> int(10) ["type"]=> int(0) }
4

2 回答 2

0

Mysqli从不干扰您的查询。

如果 fetch_array 返回 null,则结果集中没有剩余行。

于 2013-11-03T22:11:34.003 回答
0

这是因为var_dump()while循环之外。在返回while时退出, 的值在循环结束时。fetch_arrayfalse$rowfalse

于 2013-11-03T22:15:07.263 回答