Вам нужно будет выбрать данные, как вы уже делаете, а затем цикл над ним получить его в требуемом формате, и потому что поля имеют одинаковые имена, то его легче всего для использования псевдонимов или они просто перезаписывают друг друга в возвращаемых данных (но вместо этого вы можете использовать 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 или добавлять поля и т.д.
EDIT:
Принимая мету представления данных из приведенного ниже ответа ....
<?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;
To:
$out[][$meta[$key]->table][$meta[$key]->name]=$value;
как насчет сейчас? Я обновил его в свете того, что говорит карвин. – benlumley