无法在MySQL + PHP中循环结果

时间:2015-10-16 13:23:12

标签: php mysql

我很困惑,我会尝试解释而不会让你感到困惑。

我在查询中加入了多个表,这些表在SQL中正常工作并且符合预期。 (在这种情况下,表格中有两行,其中的值为' Elephant& Castle' ' Lambert North' )。

我需要循环查看$row['underground_name']数组的结果,但对于我的生活,我无法让它工作或了解我哪里出错了。

我可以遍历所有行,但这会给我两倍的所有内容,包括' Projects'中的所有内容。表 - 看起来非常低效。因为我只需要来自' Projects'的第一行。表。但如果我循环遍历$row['underground_name'],我就不会从'项目中获得任何价值。 - 此刻它感觉就像是其中一个?

是否可以仅通过$row['underground_name']数组进行循环?

这是我的代码 - 感谢您的帮助,

$query = "SELECT * FROM projects 
LEFT OUTER JOIN projects_underground ON projects.projects_id = projects_underground.projects_FK 
LEFT OUTER JOIN underground ON underground.underground_id = projects_underground.underground_FK 
LEFT OUTER JOIN natrail ON projects.natrail_id = natrail.natrail_id 
LEFT OUTER JOIN dlr ON projects.dlr_id = dlr.dlr_id 
LEFT OUTER JOIN overground ON projects.overground_id = overground.overground_id 
LEFT OUTER JOIN tram ON projects.tram_id = tram.tram_id LEFT JOIN river ON projects.river_id = river.river_id 
WHERE projects.name = 'Imperial War Museum'";

$result = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_assoc($result))
    {
        $r = $row['underground_name'];

    }

1 个答案:

答案 0 :(得分:0)

$ row ['underground_name']不会是来自数据库的PHP数组,因此您将无法迭代它。如果它存储为json,那么当你解码它时,你将有一个数组可以使用,而foreach {}将完成工作。如果它是一个更小,更明确的数据集,你可以用分隔符存储,然后爆炸该行结果来创建一个真实的数组....但是,否则,你正在处理一个字符串....并且该字符串是平的。 / p>

这是一个快速的PseudoCode,可以让您走上正确的轨道。有时候这样做会有所帮助,...然后你可以沿着print_r / var_dump来更好地可视化你的数据。

while ($row = mysqli_fetch_assoc($result)){
    $q = $row['fieldQ'];
    $r = json_decode($row['underground_name']);
    foreach($r AS $k => $v){
        //this is the loop you're looking for
    }
    $s = $row['fieldS'];
    $t = $row['fieldT'];   //etc,...etc.
}