我试图从数据库中选择多行,然后将行分成数组值,以便我可以在整个代码中使用它们。
这就是我现在所拥有的......
$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查询还是有一种简单的方法可以调用多行而不是将它们分开?
答案 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'];
}
我也会考虑你希望如何构建结果数据,但你应该得到要点。