【发布时间】:2013-11-03 22:09:11
【问题描述】:
我目前正在创建一个 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) }
【问题讨论】:
-
将 var_dump 移到收盘上方 }
-
为什么要转储 $row->name 而不是类别?
-
var_dump ($stmt);或print_r($stmt);在查询后立即得到结果。不要等到完成所有提取操作后才检查可能为空的最后一行。完成该状态后,在 while 的顶部转储或打印 $row ,以便您可以查看该阶段发生的情况。当您更熟悉 mysqli 功能和属性时,最后“快速检查”会变得更容易,但现在......婴儿步骤。 :)
标签: php mysql sql arrays mysqli