使用数组PHP的Foreach循环问题

时间:2015-08-06 23:18:34

标签: php mysql arrays wordpress

我正在尝试将我的数组与表中的条目匹配并检索条目的ID。所以我有以下数组叫做$ features。

    Array
     (
     [0] => Body Side Moldings: Body-Color
     [1] => Door Handle Color: Black
     [2] => Exhaust Tip Color: Stainless-Steel
     [3] => Front Bumper Color: Chrome
     [4] => Grille Color: Chrome Surround
     [5] => Mirror Color: Black
     [6] => Rear Bumper Color: Chrome
     [7] => Steering Ratio: 16.7
     )

我正在使用的foreach代码是:

foreach($features as $key => $value) 
    {
        $results = $wpdb->get_var("SELECT term_id FROM terms WHERE name = '$value'");
        echo "$results";
    }

现在发生的事情是我得到了第一个能够很好地回复的ID,然后就没有了。然后我尝试回显$ value,它在数组中打印出我的所有值。我手动在'条款'表中搜索了这些条款,它们很好。

我究竟做错了什么?

3 个答案:

答案 0 :(得分:0)

考虑使用WordPress' get_results()函数而不是get_var()。另请参阅此类似SO post

foreach ($features as $key => $value) {
     $results = $wpdb->get_results("SELECT term_id FROM terms WHERE name = '$value'");    

     // PRINTING RESULTS PER EACH ITEM OF ARRAY
     echo $value . " RESULTS:\n";
     foreach ($results as $output) {
         echo $output->term_id;
     }
}

答案 1 :(得分:0)

我认为你试图连接这个值。像这样:

foreach($features as $key => $value) {
   $results = $wpdb->get_var("SELECT term_id FROM terms WHERE name ='".$value."'");
}

    echo "$results";

答案 2 :(得分:0)

考虑使用get_resultsprepare,类似于:

$placeholdersFeatures = implode(', ', array_fill(0, count($features), '%s'));
$results = $wpdb->get_results($wpdb->prepare('SELECT term_id FROM terms WHERE name IN (' . $placeholdersFeatures . ')', $features));

foreach ($results as $feature) {
    echo $feature->term_id;
}

这会稍微改善你的表现。