MySQLi PHP - > LEFT JOIN使用fetch数组时返回Null

时间:2013-11-03 22:09:12

标签: php mysql sql arrays mysqli

我目前正在创建一个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) }

2 个答案:

答案 0 :(得分:0)

Mysqli 从不干扰您的查询。

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

答案 1 :(得分:0)

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