2013-03-06 37 views
2

我有一个MySQL查询的问题,我需要从我的表中提取所有数据并将其用作另一个SQL查询。Echo return多重变量

这是我使用的代码:

<?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

最后一个字不得是OR

+0

请花一些时间来正确地缩进代码。 – kapa 2013-03-06 16:05:13

回答

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)别名给定数组$ ARR的元素,并把$ s中的元件“之间”。例如。

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

打印a - b - c

+0

Verry很好的答案,我不知道如何,但你的代码工作正常! – 2013-03-06 16:09:21

+2

你可以用'return join()'指定什么发生了吗? – 2013-03-06 16:10:17

+0

谢谢你这么多VolkerK! – 2013-03-06 16:16:25

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因为这也是一个很好的答案! – 2013-03-06 16:14:46