3

ユーザーがいくつかの検索用語を定義した後、データベースから取得するコードを含むPHP Webサイトがあり、すべての情報を含むテーブルを表示します

問題は、テーブルから select * を実行しても、最初の行しか返されないことです。

コード:

$result = mysql_query("SELECT trees.*     
FROM trees 
INNER JOIN price 
ON trees.ID=price.treeid  
");


$num_rows = mysql_num_rows($result);
if($num_rows == 0) {
echo "No rows retrieved";
} else {
echo $num_rows;
}

私のデータベースには2つの行があります:

Spruce  El Sorbeous Sprucious   Green   Green   Green   100     200
its a tree ma!  true    NULL    NULL    NULL

Mayday  el daymay   red green   white   10  4000000
GOING DOWN  true    Grey    true    false

そこに $num_rows を出力すると、それは 1 つだけです。以下の表を印刷すると、1 行しかありません。

echo '<table border = 0 cellpadding=0 >';
echo '<tr>';
echo '<td><b><u>Name</b></u></td>
<td><b><u>Latin Name</b></u></td>
<td><b><u>Primary Color</b></u></td>
<td><b><u>Secondary Color</b></u></td>
<td><b><u>Fall Color</b></u></td>
<td><b><u>Trunk Color</b></u></td>';

echo '<td><b><u>Description</b></u></td>
<td><b><u>Height</b></u></td>
<td><b><u>Spread</b></u></td>
<td><b><u>Drought Resistant?</b></u></td>
<td><b><u>Flowering?</b></u></td>
<td><b><u>Fruit Producing?</b></u></td>';

echo '</tr>';

while ($row = mysql_fetch_assoc($result)) {
     echo '<tr>';
     echo '<td>';
     echo $row['name'];
     echo '</td>';
     echo '<td>';
     echo $row['latinname'];
     echo '</td>';
     echo '<td>';
     echo $row['primarycolor'];
     echo '</td>';
     echo '<td>';
     echo $row['secondarycolor'];
     echo '</td>';
     echo '<td>';
     echo $row['fallcolor'];
     echo '</td>';
     echo '<td>';
     echo $row['trunkcolor'];
     echo '</td>';
     echo '<td>';
     echo $row['description'];
     echo '</td>';
     echo '<td>';
     echo $row['height'];
     echo '</td>';
     echo '<td>';
     echo $row['spread'];
     echo '</td>';
     echo '<td>';
     echo $row['droughtresistant'];
     echo '</td>';
     echo '<td>';
     echo $row['flowering'];
     echo '</td>';
     echo '<td>';
     echo $row['fruitproducing'];
     echo '</td>';

     echo '</tr>';

}
echo '<table>';
4

2 に答える 2

3

INNER JOIN は、両方のテーブルで NOT NULL 値を持つ値のみを返します。あなたはおそらくNULL値を持つものを結合しています。代わりに LEFT または RIGHT 結合を使用してください。

于 2012-10-13T20:57:51.500 に答える
1

PRICE テーブルにはデータの例がないので、1 行だけが結合されたと推測されます。

疑問が残ります、なぜあなたはそのJOINをしているのですか? PRICE テーブルからデータを収集していないので、ポイントは何ですか。
ところで、データのどこにIDがありますか?

于 2012-10-13T21:01:05.890 に答える