Can';在MySQL+;PHP

Can';在MySQL+;PHP,php,mysql,Php,Mysql,我很困惑,我会尽力解释,不要让你也困惑 我的查询中加入了多个表,这些表在SQL中运行良好,正如预期的那样。 (在本例中,表“projects_underground”中有两行,它们的值是“Elephant&Castle”和“Lambert North”) 我需要循环查看$row['underground\u name']数组的结果,但就我而言,我无法让它工作,也无法理解我的错误所在 我可以在所有行中循环,但这会让我得到两倍的结果,包括“Projects”表中的所有内容,这看起来效率非常低。因为我

我很困惑,我会尽力解释,不要让你也困惑

我的查询中加入了多个表,这些表在SQL中运行良好,正如预期的那样。 (在本例中,表“projects_underground”中有两行,它们的值是“Elephant&Castle”和“Lambert North”)

我需要循环查看
$row['underground\u name']
数组的结果,但就我而言,我无法让它工作,也无法理解我的错误所在

我可以在所有行中循环,但这会让我得到两倍的结果,包括“Projects”表中的所有内容,这看起来效率非常低。因为我只需要“Projects”表中的第一行。但是如果我在
$row['underground\u name']
中循环,我从“projects”中得不到任何值——现在感觉它是一个还是另一个

是否可以仅循环通过
$row['underground\u 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'];

    }

$row['underground_name']不是从数据库中出来的PHP数组,因此您将无法对其进行迭代。如果它存储为json,那么当您解码它时,您将使用一个数组,foreach{}将完成这项工作。如果它是一个更小、定义更明确的数据集,您可以使用delimeter存储,然后分解该行结果以创建一个真正的数组……但除此之外,您处理的是一个字符串……而该字符串是平面的

这里有一个快速的伪代码,让你走上正确的轨道。有时候,像这样把所有的内容都安排好会很有帮助,…然后您可以打印\u r/var\u 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.
}

您能在MySQL IDE中运行查询并向我们显示结果吗?当然可以-屏幕截图在这里。。。(为了简单起见,我已将查询缩短为*项目中的所有内容,而只是“名称”)。您需要实际将结果发布在此处,而不是提供屏幕截图。这就是整个问题,为将来的访问者保留。你的问题很模糊,你在寻找什么?据我所知,mysqli_fetch_assoc($result)的结果推出了一个关联数组?-$行['underground_name']$行是数组,['underground_name']是键?。你的意思是说在$row['underground_name']上运行foreach循环就可以了吗?非常感谢你的帮助,我知道新手问的问题最无聊!是的,差不多就是这样$行是数组本身,['underroundName']是键。因此,从db中,$row['underground']name将是一个字符串。但是,如果它不是一个字符串,…如果您使用json存储它,…然后json_解码该字符串,…那么您将在$row数组中找到您要查找的数组。然后,是的,确切地说,…在$row['underground_name']上运行一个foreach{},我用正在发生的事情的一个快速示例更新了答案。它确实假设“underground_name”字段中的数据已准备好使用,正如我所说,…它不一定是json,但您需要从它创建一个数组,…json将是一个合理的起点。serialize也可以工作,但我不太喜欢它,对于“underground_name”中的简单一维数组,…仅使用分隔符和explode是最简单、开销最小的方法。