查询多个mysql行并分成变量后?

时间:2011-03-13 17:26:02

标签: php mysql

我试图从数据库中选择多行,然后将行分成数组值,以便我可以在整个代码中使用它们。

这就是我现在所拥有的......

$result = mysql_query("SELECT url, image, placement FROM advert
 WHERE user='1'") or die(mysql_error());

//This grabs 3 rows with placement name equal to 'sideadtop','sideadmiddle','sideadbottom'

 ($row =  mysql_fetch_array($result, MYSQL_NUM));

$keytop = array_search('sideadtop', $row);
$sideadtop['url'] == $row[$keytop]['url'];
$sideadtop['image'] == $row[$keytop]['image'];

$keymiddle = array_search('sideadmiddle', $row);
$sideadmiddle['url'] == $row[$keymiddle]['url'];
$sideadmiddle['image'] == $row[$keymiddle]['image'];

我正在尝试获取每个广告展示位置值的网址和图片值。我不确定如何将mysql查询的输出发送到php。它是作为多端数组发送还是仅作为数组发送?

我应该调用单个MySQL查询还是有一种简单的方法可以调用多行而不是将它们分开?

2 个答案:

答案 0 :(得分:3)

mysql_fetch_*只会获取一个行。我想你想要的是:

$result = mysql_query("SELECT url, image, placement FROM advert WHERE user='1'") 
or die(mysql_error());

$adverts = array();

while(($row = mysql_fetch_assoc($result))) {
    $adverts[$row['placement']] = $row;
}

它会创建一个这样的数组:

Array(
  'sideadtop' => Array(
       'url' => ..., 
       'image' => ...,
       'placement' => ...
   ),
   'sideadmiddle' => Array(...),
   'sideadbottom' => Array(...)
)

您可以使用$adverts['sideadtop']$adverts['sideadmiddle']

访问各个广告

Imo这是比为每个元素创建变量更好的方法。

答案 1 :(得分:0)

调用mysql_fetch_assoc / mysql_fetch_array将获得一行数据。然后,您可以对此进行迭代,以获取所有行。

我倾向于使用mysql_fetch_assoc,以提高性能。

E.g。

$result = mysql_query("SELECT url, image, placement FROM advert
 WHERE user='1'") or die(mysql_error());


while($row =  mysql_fetch_assoc($result)){

    $keytop[] = array_search('sideadtop', $row);
    $sideadtop['url'][] == $row[$keytop]['url'];
    $sideadtop['image'][] == $row[$keytop]['image'];

    $keymiddle[] = array_search('sideadmiddle', $row);
    $sideadmiddle['url'][] == $row[$keymiddle]['url'];
    $sideadmiddle['image'][] == $row[$keymiddle]['image'];
}

我也会考虑你希望如何构建结果数据,但你应该得到要点。