Это мой код и результат неверный. Я хочу показать результаты моего первого запроса в первом столбце и результаты второго запроса во 2-м столбце, но оба результата помещаются в один (первый) столбец. Как это можно сделать без изменения запроса?
/*
username username
username_a_1 username_b_1
username_a_1 username_b_4
username_a_2 username_b_1
username_a_2 username_b_4
username_a_3 username_b_5
username_a_4 username_b_2
username_a_4 username_b_3
username_a_5 username_b_1
username_a_5 username_b_4
*/
<html>
<head></head>
<table border="1" >
<tr>
<th>USERNAME</th>
<th>USERNAME</th>
</tr>
<?php
include'db_connect.php';
$query1='SELECT username FROM contacts_a ';
$query_run1=mysql_query($query1);
$query2="SELECT contacts_a.username,contacts_b.username FROM contacts_a LEFT JOIN contacts_b ON contacts_a.level=contacts_b.level";
$query_run2=mysql_query($query2);while($query_array1=mysql_fetch_assoc($query_run1)){
foreach($query_array1 as $index => $names){
echo '<tr>
<td>'.(($names == NULL )? 'NULL': $names).'</td>
</tr>';
}//end of foreach
}//end of while
while($query_array2=mysql_fetch_assoc($query_run2)){
foreach($query_array2 as $index => $names){
echo '<tr>
<td>'.(($names == NULL )? 'NULL': $names).'</td>
</tr>';
}//end of foreach
}//end of while?>
</table>
</html>
Попробуй это:
// Select the data, all together now. The difference is we'll give it a name
$query2="SELECT contacts_a.username as firstTableName,
contacts_b.username as secondTableName
FROM contacts_a
LEFT JOIN contacts_b
ON contacts_a.level = contacts_b.level";
// Execute the Query
$query_run2=mysql_query($query2);
// Loop over our results...
while($query_array1 = mysql_fetch_assoc($query_run1)) {
// We're going to use this again, give it a good name
$firstName = ($query_array1['firstTableName'] == NULL) ? 'NULL' :
$query_array1['firstTableName'];
$secondName = ($query_array1['secondTableName'] == NULL) ? 'NULL' :
$query_array1['secondTableName'];
// Put out a new table row
echo '<tr>';
// And our first TD...
echo '<td>' . firstName .'</td>';
echo '<td>' . secondName .'</td>';
echo '</tr>';
// End our loop
} // So Long and Thanks for All the Fish!
Некоторые другие мысли: Не используйте MySQL! Вы также можете избавиться от первого запроса сейчас, так как он излишний. Что касается проверок NULL, что произойдет, если данные будут представлены в виде пустой строки? Обычно я проверяю наличие нулевых и пустых кавычек: » или «», чтобы убедиться, что я получаю обратно то, что хочу.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я на самом деле не пробовал это, и я использую PDO, поэтому мой синтаксис MySQL для возврата и чтения массива MySQL может быть неправильным!
$qa1 = mysql_fetch_assoc($query_run1);
$qa2 = mysql_fetch_assoc($query_run2);
do {
echo '<tr>
<td>'.(current($qa1) == NULL ? 'NULL': current($qa1)).'</td>
<td>'.(current($qa2) == NULL ? 'NULL': current($qa2)).'</td>
</tr>';
} while( next($qa1) || next($qa2) );