循环查询并拥有位置数组


Loop through query and have an array of location

我有一个这样的SQL查询:

SELECT name, rbl.locationlabel FROM `pages` INNER JOIN locations as rbl ON rbl.locationId = pages.locationId

这将返回一个名称列表和一个locationlabel, locationlabel将是'location a ', 'location B'或'location C'我得到的是这个:

$query = mysqli_query($connection, "SELECT name, rbl.locationlabel FROM `pages` INNER JOIN locations as rbl ON rbl.locationId = pages.locationId");
                $results = array();
                $results['location'] = array();
                while($row = mysqli_fetch_assoc($query)){
                        $results[] = $row;
                }
                return $results;

这将循环通过结果,并把它放入一个数组,我要做的是有另一个数组或数组内的结果数组有每个位置,并有分配给位置的名称。

假设name字段是唯一的,您可以简单地使用:

while($row = mysql_fetch_assoc($query)) {
   $results[$row['name']] = $row;
}

但是如果你有重复的名字,那么你需要一些更花哨的逻辑,比如创建子数组:

   $results[$row['name']][] = $row;

你可以这样做:

<?php
$con=mysqli_connect("localhost","root","","abc1");
if($con)
{
$i=0;
$query="select distinct location from locations";
$result=mysqli_query($con,$query);
while($re=mysqli_fetch_array($result))
{
$x[]=$re;
}
}
$m=array();
for($i=0;$i<3;$i++)
{
$query="SELECT name FROM `pages` INNER JOIN locations as rbl ON rbl.locationId = pages.locationId";
$z=$x[$i]['location'];
echo $query;
$result=mysqli_query($con,$query);
while($re=mysqli_fetch_array($result))
{
foreach($re as $q)
$m["'".$z."'"][]=$q;
}

}

print_r($m);

?>

将名称存储在一个数组中,该数组的索引是位置的名称。

样本输出:

 Array ( ['A'] => Array ( [0] => John [1] => Jim [2] => Jack) 
['B'] => Array ( [0] => Joseph [1] => Mary ) 
['C'] => Array ( [0] => Bale [1] => Cyrus [2] => Mike [3] => Rhode ) )

您可以使用name_of_array['location_name'][number of name records]

访问元素

希望能有所帮助。