2

これを1つのテーブルに入れるのに問題があります。現在、2 つのテーブルを並べて使用していますが、それが最善の解決策だとは思いません。テーブルをすべてセットアップしましたが、これをテーブルに入れる方法がわかりません。

while ($row = mysql_fetch_assoc($query)) {

$result .= "<tr> <td> {$row['a']} the {$row['b']} </td>      </tr>";
 }

  echo $thegames;

これにより、次のようなものが生成されます。

       james the giant
       rick the monster
       chris the goblin

私が欲しいのは、別のwhileループからさらにtdsを追加できるようにすることです...

  while($secondrow = mysql_fetch_assoc($secondquery)) { 
   $first = "<td> {$secondrow['alias']} </td>";
   $second = "<td> {$secondrow['number']} </td>";
  }

したがって、最終的には次のようになりたいと思います。

   james the giant $secondrow['alias']  $secondrow['number'] 
   rick the monster $secondrow['alias']  $secondrow['number']

等...

これが理にかなっていることを願っています。私が今していることは、2 つの別々のテーブルを作成し、それらを並べようとしていますが、その方法は好きではありません。どんな助けでも素晴らしいでしょう。

4

2 に答える 2

4

コードから判断すると、実際には 2 つのクエリを実行する必要はありません。各行に 4 列が必要な場合は、while ループを複数回実行する必要もありません。むしろ、JOIN を使用するようにクエリの構造を変更します。これにより、完全な結果セットを 1 回で取得できます。

前述のとおり、mysql_*新しいコードでは関数を使用しないでください。それらはもはや維持されておらず、公式に廃止されています。

これまでに示したコードに基づいて、テーブル名と主キーについていくつかの仮定を立てて、PDO で JOIN を実行する方法を示します。

$pdo = new PDO("mysql:host=localhost;dbname=database", '-username-', '-password-');
$sql = '
    SELECT 
        `players`.`id`, 
        `players`.`a`,
        `players`.`b`, 
        `player_info`.`alias`,
        `player_info`.`number`   
    FROM 
        `players` 
    LEFT JOIN
        `player_info` ON  `players`.id = `player_info`.`player_id`
';
$players = $pdo->query($sql);

$row_data= array();
while ($row = $players->fetch()) {
    $row_data[] = '
        <td>'.$row->a.' the '.$row->b.'</td>
        <td>'.$row->alias.'</td>
        <td>'.$row->number.'</td>   
    ';
}

echo '<table><tr>'.implode('</tr><tr>', $row_data).'</tr></table'>;

結合が非現実的 (一般的ではない) であることが判明した場合は、データ配列を構築し、HTML を 2 つの別個の手順として生成する必要があります。

// gather the data
$data = array();
$first = $pdo->query($sql);
while($arow = $first->fetch()) {
    $one_data['a'] = $arow->a;
    $one_data['b'] = $arow->b;

    $second = $pdo->query($second_sql);
    while($brow = $second->fetch()) {
        $one_data['alias'] = $brow->alias;
        $one_data['number'] = $brow->number;
    }
    $data[] = $one_data;
}

// now generate HTML
print '<table>';
foreach ($data as $row) {
    print '
        <tr>
            <td>'.$row['a'].' the '.$row['b'].'</td>
            <td>'.$row['alias'].'</td>
            <td>'.$row['number'].'</td> 
        </tr>
    ';
}
print '</table>';

補足として... と という名前の列aは、b単に悪い. アイデア。これらの列はデータを表すため、そのデータが何であるかを反映するラベルを列に付けます。今日、ミステリーコラムを扱っても大丈夫かもしれません...あなたはそれらが何を意味するか覚えています. 今から6ヶ月?1年後?すべての列と変数に意味のある名前を使用してください。

ドキュメンテーション

于 2013-04-05T15:28:35.977 に答える