我目前正在创建一个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) }
答案 0 :(得分:0)
Mysqli 从不干扰您的查询。
如果fetch_array返回null,则结果集中没有剩余行。
答案 1 :(得分:0)
这是因为var_dump()
在while
循环之外。当while
返回fetch_array
时,当false
退出时,$row
的值在循环结束时为false
。