根据列名将查询拆分为多个数组

时间:2012-08-31 14:05:54

标签: php mysql arrays split mysqli

我想运行一个查询,从数据库获取所有数据,然后将数据拆分为每列的数组。有了这个,我打算动态填充html。我对php不是很有经验,可以使用一些帮助来解决如何将我的查询放入多个数组中,具体取决于它所在的列。

示例:对于列名称,我想要一个数组$itemName[],它将以asc顺序包含每个项目名称。然后对于图像列,我希望每个图像/图像网址都有一个数组$itemImage[]

有了这个,我打算运行一个for循环,当x增加时,它将遍历每个diff数组并从指定位置拉出。我的数据库中没有空值,所以我不需要担心。

您可以根据列名称将查询写入多个数组中给予我任何帮助。

    $mPos = array(mPos1, mPos2, mPos3, mPos4);

    for (x=0; x<4; x++){

    echo "<div class="$mPos[x]"> <div class="$mPos[x] . '_1'">"$title[x]"</div><div class="$mPos1 . '_2'">"$image[x]"</div>

2 个答案:

答案 0 :(得分:1)

我仍然没有意义将它分开,但是你走了。

由于您没有提供数据库/表结构,我将假设您的db表具有以下列:

itemId | itemName | itemImage | itemDescription

在PHP中,您遍历行的结果行并填充数组,如

foreach ( $result AS $row ) {
  $itemNames[$row->itemId] = $row->itemName;
  $itemImages[$row->itemId] = $row->itemImage;
  $itemDescriptions[$row->itemId] = $row->itemDescription;
}

编辑:问题更新后,现在包含HTML输出,我建议像这样。

foreach ( $result AS $row ) {
  $items[$row->itemId] = array(
    'name' => $row->itemName,
    'image' => $row->itemImage,
    'description' => $row->itemDescription,
    'price' => $row->itemPrice,
    'link' => $row->itemLink,
  );
}
$x = 0;
while ($x<4) {
  $x++;
  $item = array_shift($items);
  echo '<div class="mPos'.$x.'"> 
    <div class="mPos'.$x.'_1">"'.$item['name'].'"</div>
    <div class="mPos'.$x.'_2">"'.$item['price'].'"</div>
    <div class="mPos'.$x.'_3"><a href="'.$item['link'].'">
      <img src="'.$item['image'].'" /></a>
    </div>
  </div>';
}

答案 1 :(得分:0)

$sth = $dbh->prepare("SELECT itemName, itemImage FROM myTable");
$sth->execute();
$result = $sth->fetchAll();

$myArr = array();
foreach($result as $row){
    foreach($row as $colName => $colVal){
         $myArr[$colName][] => $colVal;
    }
}
echo '<pre>';
print_r($myArr);
echo '</pre>';

虽然我对你如何从设计角度实际接近这一点感到疑虑。