簡體   English   中英

將兩個查詢中的值匹配到同一個表中

[英]Matching values from two queries into the same table

我正在嘗試向PHP上的編碼值添加描述。 該代碼是從一個表中提取的,描述是從另一個表中提取的。 想法是將它們顯示在具有每個代碼正確描述的表上,但是當我嘗試添加原始有序查詢時,這些描述放錯了位置,因此我嘗試了以下操作:

 <table>
 for($i=0; $i < $items; $i++)
 {
     $row = $results -> fetch_array();
     echo '<tr>';
     echo '<td>'.$row['code'].'</td>';
     for($j=0; $j<$items2; $j++) 
     {
         $row2 = $result2 -> fetch_array();
         if ($row['code'] == $row2['code']) 
         {
             echo '<td>'.$row2['description'].'</td>';
         }
     }
     echo '</tr>';
 }
 echo '</table>';

它正在為第一個值工作,但只有第一個值有效,該列的其余部分為空。

我認為您的問題是,必須重置$result2的行指針。

 <table>
 for($i=0; $i < $items; $i++)
 {
     $row = $results -> fetch_array();
     echo '<tr>';
     echo '<td>'.$row['code'].'</td>';
     for($j=0; $j<items2; $j++) 
     {
         $result2 -> data_seek( 0 );
         $row2 = $result2 -> fetch_array();
         if ($row['code'] == $row2['code']) 
         {
             echo '<td>'.$row2['code'].'</td>';
         }
     }
     echo '</tr>';
 }
 echo '</table>';

每次調用fetch_array ,內部行指針都會加1。 因此,在外部for循環的第二個循環中, $result2 -> fetch_array()將重新調整為NULL因為沒有剩余的結果了。

另外,您可以在第一個循環將結果存儲在二維數組中之前遍歷$result2 但是:我寧願使用JOIN兩個語句放在一起,這樣您只會得到一個結果集。 但是提供的信息太少,無法確定在這種情況下是否可行。

MySQL JOIN語法

哼……循環($ j)和row2之間有什么聯系? $ j未使用? 不應成為您查詢的參數嗎?

我認為您需要的是這樣的東西:

<?php
$data1 = $results->fetch_array();
$data2 = $results2->fetch_array();

foreach( $data1 as $row ) {
  echo '<tr>';
  echo '<td>', $row['code'], '</td>';
  foreach( $data2 as $row2 ) {
    echo '<td>';
    if( $row['code'] == $row2['code'] ) {
      echo 'match';
    }
    else {
      echo 'no match';
    }
    echo '</td>';
  }
  echo '</tr>';
}

我沒有添加for,因為我不明白你想要什么。 對於fetch_array,您只能調用一次(如果更改參數,即:somefield = $ j),則有另一種邏輯)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM