birçok ilişki çok dışarı veri çekerek

1 Cevap php

Ben şimdi birkaç gün için bu bir ile boğuşuyor oldum, ama benim kuşkusuz sınırlı mysql bilginin sınırlarını ulaştınız. Ben bir arama tablosu Groupıd iki sütunlu groupparty ve partyid kullanarak, iki tablo, gruplar ve partiler var. Belirli bir parti önüne alındığında, ben sadece o parti ile ilişkili gruplar dışarı çıkarmak istiyorum. İşte ben ile mücadele ettik script çıplak kemikleri:

<?php



include $_SERVER['DOCUMENT_ROOT'] . '/includes/connect.inc.php';

 $partyid = '71';
 $sql = "SELECT groupid FROM groupparty WHERE groupparty.partyid='$partyid'";
 $result = mysqli_query($link, $sql);
 while ($row = mysqli_fetch_array($result))
 {
  $groupids[] = array('groupid' => $row['groupid']);
 }

 $sql = "SELECT groupname FROM groups WHERE id='$groupids'";
 $result = mysqli_query($link, $sql);
 while ($row = mysqli_fetch_array($result))
 {
  $groups[] = array('groupname' => $row['groupname']);
 }

 include 'show.html.php';
 exit();

?>

Ve show.html.php içinde html çağrı:

Group(s):
 <?php foreach ($groups as $group): ?>
 <?php htmlout($group['groupname']); ?>
 <?php endforeach; ?>

Hangi tabii bana aşağıdaki hatayı veriyor:

 Group(s): 
 Warning: Invalid argument supplied for foreach() in show.html.php on line 2

Ben sorunu SELECT groupname FROM groups WHERE id='$groupids' için girişimi olduğunu biliyorum. Ama nasıl bir bu ortak bir durum ele?

Teşekkürler.

1 Cevap

Sadece tek bir sorguda her şeyi yapmak için bir birleşim kullanın:

SELECT groups.groupname
FROM groupparty
JOIN groups
ON groups.id = groupparty.groupid
WHERE groupparty.partyid='$partyid'

Yoksa kimlikleri bir dizi birini maç için SQL ifadesi IN (..., ..., ...) kullanmak yapmanın yolu ile devam etmek istiyorum. Ben bu olsa tavsiye etmem.