你需要選擇你已經在做,並且數據然後遍歷它越來越成所需的格式,而且由於字段具有相同的名稱,其最簡單的要使用別名,或者他們只是在返回的數據中相互覆蓋(但您可以使用mysql_fetch_row代替,這會返回數字索引的數組)。
例如:
$sql = "select tb1.f1 as tb1f1,tb1.f2 as tb1f2,tb2.f1 as tb2f1 from tb1,tb2";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
$result['t1']['f1']=$row['tb1f1'];
$result['t1']['f2']=$row['tb1f2'];
$result['t2']['f1']=$row['tb2f1'];
}
(引用的錯誤是在你的SQL以及)
這不會處理多行下去,但那種你的問題意味着你只希望過一排?
如果不進行別名:
$sql = "select tb1.f1,tb1.f2,tb2.f1 from tb1,tb2";
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
$result['t1']['f1']=$row[0];
$result['t1']['f2']=$row[1];
$result['t2']['f1']=$row[2];
}
我喜歡的第一個版本,除非你有一個很好的理由使用第二個,因爲它不太可能導致錯誤,如果你改變了SQL或添加字段等
編輯:
以從下面的響應的元數據想法....
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('dbname');
$result = mysql_query('select tb1.f1, tb1.f2, tb2.f1 from tb1, tb2');
$meta = array();
for ($i = 0; $i < mysql_num_fields($result); ++$i) {
$meta[$i] = mysql_fetch_field($result, $i);
}
while ($row = mysql_fetch_row($result)) {
foreach($row as $key=>$value) {
$out[$meta[$key]->table][$meta[$key]->name]=$value;
}
}
似乎正在做你以後的事情 - 儘管你一次只能得到一行。
輕鬆更新,以多行存儲在陣列上的另一個維度:
變化:
$out[$meta[$key]->table][$meta[$key]->name]=$value;
要:
$out[][$meta[$key]->table][$meta[$key]->name]=$value;
現在怎麼樣?根據卡爾溫所說的話,我已經更新了它。 – benlumley 2009-02-06 16:47:21