2013-03-06 3 views
2

У меня проблема с запросом mysql, мне нужно извлечь все данные из моей таблицы и использовать его в качестве другого SQL-запроса.Echo return mulitiple variables

Это код, я использую:

<?php 
function toateMhz() { 

require ('SQL.php'); 
    $sql = "SELECT DISTINCT(performanta_cpu) FROM modele ORDER BY CAST(performanta_cpu AS UNSIGNED) DESC"; 
    foreach ($dbh->query($sql) as $linie) 
    { 
    $mhz[] = $linie['performanta_cpu']; 
    } 

    if(isset($mhz['1'])) 
    { 
    $mhz1 = "$mhz[0] OR "; 
}  
    else $mhz['0']; 

    if(isset($mhz['2'])) 
    { 
    $mhz2 = "$mhz[1] OR "; 
}  
    else $mhz['1']; 

    if(isset($mhz['3'])) 
    { 
    $mhz3 = "$mhz[2] OR "; 
}  
    else $mhz['2']; 

    if(isset($mhz['4'])) 
    { 
    $mhz4 = "$mhz[3] OR "; 
}  
    else $mhz['3']; 

    if(isset($mhz['5'])) 
    { 
    $mhz5 = "$mhz[4] OR "; 
}  
    else $mhz['4']; 

    if(isset($mhz['6'])) 
    { 
    $mhz6 = "$mhz[5] OR "; 
}  
    else $mhz['5']; 

    if(isset($mhz['7'])) 
    { 
    $mhz7 = "$mhz[6] OR "; 
}  
    else $mhz['6']; 

    if(isset($mhz['8'])) 
    { 
    $mhz8 = "$mhz[7] OR "; 
}  
    else $mhz['7']; 

    if(isset($mhz['9'])) 
    { 
    $mhz9 = "$mhz[8] OR "; 
}  
    else $mhz['8']; 

    if(isset($mhz['10'])) 
    { 
    $mhz10 = "$mhz[9] OR "; 
}  
    else $mhz['9']; 

    if(isset($mhz['11'])) 
    { 
    $mhz11 = "$mhz[10] OR "; 
}  
    else $mhz['10']; 

    if(isset($mhz['12'])) 
    { 
    $mhz12 = "$mhz[11] OR "; 
}  
    else $mhz['11']; 

    if(isset($mhz['13'])) 
    { 
    $mhz13 = "$mhz[12] OR "; 
}  
    else $mhz['12']; 

    if(isset($mhz['14'])) 
    { 
    $mhz14 = "$mhz[13] OR "; 
}  
    else $mhz['13']; 

    if(isset($mhz['15'])) 
    { 
    $mhz14 = "$mhz[14] OR "; 
}  
    else $mhz['14']; 

    $frecvente = "$mhz1 $mhz2 $mhz3 $mhz4 $mhz5 $mhz6 $mhz7 $mhz8 $mhz9 $mhz10 $mhz11 $mhz12 $mhz13 $mhz14"; 
    return $frecvente; 
} 

echo toateMhz(); 
?> 

И это результат из кода:

2000 OR 1600 OR 1500 OR 1400 OR 1000 OR 800 OR

Но правильный результат 2000 OR 1600 OR 1500 OR 1400 OR 1000 OR 800 OR 200

Последнее слово не должно be OR

+0

Пожалуйста, потратьте немного времени, чтобы отступ вашего кода правильно. – kapa

ответ

3

Не совсем уверен, но это может сделать трюк

foreach ($dbh->query($sql) as $linie) { 
    // append value of this record to the array $mhz 
    $mhz[] = $linie['performanta_cpu']; 
} 
// return the concatenation of all elements in $mhz with ' OR ' as "glue" between elements 
return join(' OR ', $mhz); 

join($s, $arr) является псевдонимом implode($s, $arr) конкатенации все (строка) элементы данного массива $ обр и положить $ s «между» элементами. Например.

$x = array('a','b', 'c'); 
echo join(' - ', $x); 

a - b - c печатает

+0

Верный хороший ответ, я не знаю, как, но ваш код работает нормально! –

+2

Можете ли вы указать, что происходит с 'return join()'? –

+0

Thankyou так много VolkerK! –

2

Используйте лопается, чтобы присоединиться к вашему значению массива в строку:

function toateMhz() { 

    require ('SQL.php'); 
    $sql = "SELECT DISTINCT(performanta_cpu) FROM modele ORDER BY CAST(performanta_cpu AS UNSIGNED) DESC"; 
    foreach ($dbh->query($sql) as $linie) 
    { 
     $mhz[] = $linie['performanta_cpu']; 
    } 
    return implode(" OR ", $mzh); 
} 
echo toateMhz(); 
+0

+1 Потому что это также хороший ответ! –

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