2014-04-05 93 views
0

情況是這樣的..合併兩個MySQL導致

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

$name = $row['name']; 
$class = $row['class']; 
$result = $row['phone']; 

$data .= '<td>'.$name.'</td><td>'.$class.'</td><td>'.$result.'</td>'; 
} 



echo "<table><tr>'.$data.'</tr><table>" 

$name$class會發生一次,但$result將發生不止一次。我想他們在一個單一的HTML row..Like一起顯示此

Kevin | IX | 5343634,3565656 
Melvin | X | 54534,3778,54434 

回答

0

一個可能的方法:收集關聯數組結果第一,name索引*,因爲他們似乎是唯一的),然後做什麼你想要這些結果。例如:

$results = array(); 
while ($row = mysql_fetch_assoc($sql)) { 
    $name = $row['name']; 
    $results[$name]['class'] = $row['class']; 
    $results[$name]['phone'][] = $row['phone']; 
} 

echo '<table>'; 
foreach ($results as $name => $result) { 
    echo '<tr><td>' . $name . '</td><td>' . $result['class'] 
      . '</td><td>' . implode(',', $result['phone']) . '</td></tr>'; 
} 
echo '</table>'; 

另一種方法:使你的查詢彙總的手機本身帶有GROUP BY和CONCAT_WS

SELECT name, class, CONCAT_WS(',', phone) AS phones 
    FROM students 
GROUP BY name 

那麼你就必須所有的手機給定名稱已經在逗號服了你了 - 分離的格式。


作爲旁註,考慮切換到或者mysqlipdo擴展 - 代替mysql。這就是PHP documentation說一下:

這個擴展不贊成PHP 5.5.0,並且不建議 編寫新的代碼它會在未來被刪除。相反,應使用 無論是mysqliPDO_MySQL擴展。

這並不像聽起來那麼簡單,但對於單獨準備好的陳述來說,這絕對是值得的。

+0

賓果...! :D – dikesh

+0

是的,只是我快一點。 )關於差異的註釋:首先,我寧願命名一個變量來存儲具有複數名詞('$ results',而不是'$ result')的項目集合;其次,問題和答案中的引號不匹配。 – raina77ow

+0

謝謝你......編輯! – dikesh

0

下面會顯示一個TD與逗號分隔值。

$result = array(); 

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

array_push($result, $row['id']); 
} 



echo "<table><tr><td>". implode(',',$result) ."</td></tr><table>"