2011-10-20 60 views
0

我需要拉一个查询像这样的PHP MySQL查询到阵列的帮助

$result = mysql_query(" 
SELECT id, bid, text, link, orderid 
FROM blast_sl 
WHERE buuid = $bid 
ORDER BY orderid"); 

returns: 
1,1,test1,http://test1.com,1 
2,1,test2,http://test2.com,2 

我需要的是更先进一点,然后

mysql_fetch_array 

所以这个查询运行时,它会填充不同点在一个页面上。我将无法在页面中运行任何循环,因此我需要它们像这样安装。

$result[1][3] 

so $result [orderid][text] 

这将拉动第一行第一个项目..

test1 

and $result[2][3] 

会拉

test2 

谁能帮助我吗?

回答

1

所有你需要做的是把数据放到一个巨大的结果数组:

$result = mysql_query(" 
SELECT id, bid, text, link, orderid 
FROM blast_sl 
WHERE buuid = $bid 
ORDER BY orderid"); 

$results=array(); 
while ($row=mysql_fetch_row($result)) 
{ 
    $results[$row[0]]=$row; 
    // Uncomment next line to make $result[1][3] return 3rd rather than 4th item 
    // array_unshift($results[$row[0]],''); // Adds a dummy value at the start of the array 
} 
$result=$results; //copy back into the $result var 

,你应该是好去。请记住,阵列将0索引,而不是1.如果你真的需要$result[1][3]返回第三个元素,而不是第四个,你需要做一些花哨的循环和计数,以便它排序

+0

完美的谢谢戴夫像一个魅力工作。 –

2
$data = array(); 
while($row = mysql_fetch_assoc()) { 
    $data[$row['id']] = $row; 
} 

会给你

$data = array(
    1 => array('id' => 1, 'bid' => 1, 'text' => 'test1', 'link' => 'http://test1.com', 'orderid' => 1, 
    2 => array('id' => 2, .....), 
    ... 
) 

您可以建立该数组任何你想要的,这只是一个例子。

0

您可以将参数MYSQL_NUM传递给mysql_fetch_array函数,这将允许您通过索引来引用记录列。

while($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    printf("ID: %s Name: %s", $row[0], $row[1]); 
} 

然后,创建阵列

while($row = mysql_fetch_array($result, MYSQL_NUM)) { 
     $result [] = $row; 
} 

$result[2][3] 
0

我认为这是你想要什么。

mysql_query("SELECT orderid, text FROM blast_sl ORDER BY orderid"); 

对不起,如果不是,但我不是很确定你想要什么。