2012-09-24 4 views
0

У меня есть этот код, который выполняет поиск около 30-40 столбцов, используя запрограммированный сгенерированный запрос при объединении 11 таблиц, так что естественно, что суррогатные ключи могут отображаться несколько раз. результаты поиска затем сгруппированы по tbl_sub_model.sub_model_sk, чтобы предотвратить двойной взлет на экране окончательных результатов поиска, и я получаю данные из связанных таблиц (от одного до многих).Извлечение данных столбца из внутреннего имени неоднозначного столбца объединения

код должен быть проложен через сгруппированные результаты, извлекать любые поля значков, связанные с этой вспомогательной моделью, объединять значки вместе в одну строку и эхо их после make и модели что-то вроде «subaru forrester xs ltd» Я получаю make и модель, но ничего больше в точке A и ничего в точке B. Я подозреваю, что это имеет какое-то отношение к тому, что я имею в виду «tbl_sub_model.sub_model_sk», а не, например, «model_name». любая помощь будет принята с благодарностью.

while ($row = mysql_fetch_array($result)) { 
      $badge_result_list = mysql_query("select badge from tbl_badge where sub_model_sk = {$row['tbl_sub_model.sub_model_sk']}"); 
      $badge_str=''; 
      while ($badge_result = mysql_fetch_array($badge_result_list)) { 
       $badge_str.=$badge_result; 
      } 
      echo $row['tbl_sub_model.sub_model_sk']; //<<<<<point B 
      echo "<div class=\"top\" rel=\"{$div_count_id}\">{$row['manufacturer_name']} {$row['model_name']} {$badge_str}</div>"; //<<<<<point A 
      echo "<div class=\"mid\" id=\"mid{$div_count_id}\" style=\"display: none;\">"; 
      echo $row['tbl_sub_model.sub_model_sk']; 
      echo "</div>"; 

      $div_count_id++; 
     } 
+0

php не имеет понятия «присоединяется» - это вещь SQL, и вы не собираетесь присоединяться к вашему запросу. –

+0

прочитайте этот учебник о присоединении http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.php –

+1

Пожалуйста, не используйте 'mysql_ *' функции для нового кода. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). См. [** красное поле **] (http://goo.gl/GPmFd)? Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, [эта статья] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите узнать, [это хороший учебник PDO] (http://goo.gl/vFWnC). – PeeHaa

ответ

0

use print_r ($ row); чтобы узнать, какие строки доступны в вашем запросе, тогда вы знаете, какой ключ использовать для получения необходимой информации.

+0

Это должен быть комментарий. – PeeHaa

+0

ОК, так что дает? Я получаю «Массив ([0] => 89 [sub_model_sk] => 89 [1] => SFRST97AB [oldid] => SFRST97AB [2] => 584 [model_sk] => 584 [3] => [gen_sk] = > [4] => 1997 [sub_model_year] => 1997 .................... ", напечатанный на странице под каждой записью, а sub_model_sk появляется только один раз в начале , несмотря на то, что мой quere является select * from ... inner join ... Поместить тот же запрос в mysql workbench возвращает несколько sub_model_sk. php достаточно умен, чтобы редактировать повторы? –

+1

Ассоциативный массив не может иметь два элемента с тем же ключом, а 'mysql_fetch_array' просто использует неквалифицированное имя столбца в качестве ключа. Вы должны использовать псевдонимы столбцов, чтобы гарантировать уникальность имен. – Barmar

Смежные вопросы