2015-01-17 2 views
-5

У меня есть 2 вопроса. и 2 в то время как петли.Несколько циклов цикла в двух запросах

моя проблема в том, что когда я вызываю значения. только один запрос и один цикл верны. другой цикл отображает повторяющиеся значения.

вот что у меня есть:

$query1=mysql_query("SELECT * FROM table1"); 
$query2=mysql_query("SELECT * FROM table2"); 

while($row1=mysql_fetch_array($query1)){ 
    while($row2=mysql_fetch_array($query2)){ 

    echo $row1['nameofattribute'] ; 
    echo $row2['nameofattribute'] ; 
    } 
} 

выход запроса 1 является правильным. но вывод запроса 2 является повторяющимися значениями. например: запроса 1 = $ row1 = 2 $ row1 = 3 $ row1 = 4 запрос 2 = $ row2 = 3 $ row2 = 3 $ row2 = 3

вместо этого должно быть запроса 1 = $ row1 = 2 $ row1 = 3 $ row1 = 4 query 2 = $ row2 = 1 $ row2 = 2 $ row2 = 3

наверху мой простой перевод кода. вот мой настоящий код:

$query1 = mysql_query("SELECT remarks FROM passed_deliverable WHERE user_id=$uid && deliverable_category_id=4"); 

    $query2=mysql_query("SELECT 
    deliverable_id, deliverable_title, deliverable_desc, adviser_id ,deliverable_category_id 
    FROM deliverable d 
    WHERE d.deliverable_category_id=4 
    && EXISTS (
    SELECT 'X' 
    FROM passed_deliverable pd 
    WHERE pd.deliverable_id = d.deliverable_id && user_id='".$_GET['edit']."' && adviser_id='".$_SESSION['user_id']."') "); 

    while($x=mysql_fetch_array($query1)){ 
    while($deliverable=mysql_fetch_assoc($query2)){ 


    echo " 
    {$deliverable['deliverable_desc']} 
    {$x['remarks']} 
    "; 
+0

Пробовали ли вы присоединитесь ЗАЯВЛЕНИЯ –

+0

@IndraKumarS нет. я стараюсь быть как можно более простым. но я открыт для предложений. –

+1

Что вы пытаетесь достичь? –

ответ

1

попробовать это: другой ответ или цикл из мр. hellcode это показывает, что вы также можете использовать массив значений, а не только с помощью массива

$a1 = 0[]; 
$a2 = 0[]; 
while($x=mysql_fetch_array($query1)) { 
$a1[] = $x['remarks']; 
} 
while($deliverable=mysql_fetch_assoc($query2)) { 
    $a2[] = $deliverable['deliverable_desc']; 
} 
for($i=0; $i < count($a1) and $i < count($a2); $i++) { 
echo "\n\n".$a2[$i]."\n".$a1[$i]; 
} 
0

Deprecation of mysql_ functions. Пожалуйста, избегайте функции mysql_. В любом случае ваш запрос кажется необычным. потому что мы не видим предложения WHERE в ваших запросах. Это означает, что он вернет дублирующее значение. Table1 Каждая строка будет проверять все строки Table2.

+0

, пожалуйста, прочитайте нижнюю часть вопроса. –

+0

@MarkYu вы можете показать его на sqlfiddle? – Imran

1

Предполагая, что вы просто хотите, чтобы объединить получившиеся строки обеих таблиц в их появляющейся порядке (без учета результатов, превосходящих другую таблицу):

$a1 = array(); 
$a2 = array(); 
while($x=mysql_fetch_array($query1)) { 
    $a1[] = $x['remarks']; 
} 
while($deliverable=mysql_fetch_assoc($query2)) { 
    $a2[] = $deliverable['deliverable_desc']; 
} 
for($i=0; $i < count($a1) and $i < count($a2); $i++) { 
    echo "\n\n".$a2[$i]."\n".$a1[$i]; 
} 
+0

это то, чего я ждал.Спасибо! –

+0

благодарю вас за ваш ответ, сэр, спасибо вам много! новый урок узнал для меня :) –

Смежные вопросы