Php 查询多个mysql行并在之后分离为变量?

Php 查询多个mysql行并在之后分离为变量?,php,mysql,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' ($

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

这就是我现在拥有的

$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'];
我正在尝试获取每个广告放置值的url和图像值。我不确定mysql查询的输出是如何发送到php的。它是作为多维数组发送还是仅作为数组发送


我应该调用单独的MySQL查询,还是有一种简单的方法来调用多行,然后将它们分开?

调用MySQL\u fetch\u assoc/MySQL\u fetch\u数组将获得一行数据。然后,您可以迭代此操作,以获取所有行

我倾向于使用mysql\u fetch\u assoc,以实现性能的小幅度提高

例如


我还会考虑您希望结果数据的结构如何,但您应该了解要点。

mysql\u 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['sideadmidle']
等访问单个广告


在我看来,这是一种比为每个元素创建变量更好的方法。

(a)您没有分配任何内容。作业通过
=
完成。(b) 这段代码似乎不起作用:
$row
只包含结果集中的一行。它是一个一维数组,其中每个条目表示该行的一列。因此,
$row[$keytop]['url']
永远无法工作。请告诉我们您的数据库结构以及
$row
的结构。谢谢Felix,这正是我需要的。我不知道我可以将列的id放入数组中。这很好用。@Tianbo84:不客气:)如果您还不太熟悉数组,我建议您阅读。这给出了所有可能性的一个很好的概述。
Array(
  'sideadtop' => Array(
       'url' => ..., 
       'image' => ...,
       'placement' => ...
   ),
   'sideadmiddle' => Array(...),
   'sideadbottom' => Array(...)
)