[英]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
兩個語句放在一起,這樣您只會得到一個結果集。 但是提供的信息太少,無法確定在這種情況下是否可行。
哼……循環($ 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.