2

mysqlクエリに問題があります。テーブルからすべてのデータを抽出し、それを別のSQLクエリとして使用する必要があります。

これは私が使用しているコードです:

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

4

2 に答える 2

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

于 2013-03-06T16:05:22.707 に答える
2

implodeを使用して、配列値を文字列に結合します。

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(); 
于 2013-03-06T16:05:43.753 に答える