Php 在这种情况下,如何获取外部foreach循环值?

Php 在这种情况下,如何获取外部foreach循环值?,php,mysql,sql,arrays,pdo,Php,Mysql,Sql,Arrays,Pdo,我试图从mysql数据调用foreach循环中的所有值,并将这些值输入到另一个mysql select语句中。请看下面我的代码。它只能收集一个值。我想使用第一个foreach循环包含整个部分,但是,因为foreach值是独立的,我需要为PDO准备分解数组。最后,我想知道一种从外部foreach循环获取所有值的方法。谢谢 //mysql连接代码,请删除,因为它与此问题无关 foreach($tag_id作为$term){ $term=$term['term'].';//使用空格分隔每个字符 }

我试图从mysql数据调用foreach循环中的所有值,并将这些值输入到另一个mysql select语句中。请看下面我的代码。它只能收集一个值。我想使用第一个foreach循环包含整个部分,但是,因为foreach值是独立的,我需要为PDO准备分解数组。最后,我想知道一种从外部foreach循环获取所有值的方法。谢谢

//mysql连接代码,请删除,因为它与此问题无关
foreach($tag_id作为$term){
$term=$term['term'].';//使用空格分隔每个字符
}
echo$term://只能有一个,如何从上面的foreach中获得所有结果。
$term=爆炸(“”,$term);
$stm=$db->prepare(“从术语所在的符号中选择用户标识(:term_0,:term_1,:ts.id,s.term,s.counter,os.user_id,os.id,COUNT(oserm_2,:term_3,:term_4,:term_5,:term_6,:term_7,:term_8,:term_9,:term_10)”;
$term_0=“$term[0]”;
$term_1=“$term[1]”;
$term_2=“$term[2]”;
$term_3=“$term[3]”;
$term_4=“$term[4]”;

//以下代码与此问题无关。
每次进行循环时,都会覆盖vale os$术语,请查看以下内容:

      $string = ''

        foreach ($tag_id as $term){
            $string .= $term['term'] . ' ';//use space to seprate each one

         }

         $term = $string;
   echo $term:// only can can one, how can I get all result from above foreach.
    $term=explode(' ', $term);


    $stm =$db->prepare("SELECT user_id FROM sign WHERE term IN (:term_0,:term_1,:ts.id, s.term, s.counter, os.user_id, os.id, COUNT(oserm_2,:term_3,:term_4,:term_5,:term_6,:term_7,:term_8,:term_9,:term_10)");

$term_0="$term[0]";
    $term_1="$term[1]";
    $term_2="$term[2]";
    $term_3="$term[3]";
    $term_4="$term[4]";
//following code is not relevive to this question.
其他回路:

  $string = array();

    foreach ($tag_id as $term){
        $string[] = $term['term'];
     }

$term = $string;

如果您的最终目的是从值创建数组,那么为什么要将数据附加到字符串中,只需将数据添加到数组中,然后直接使用它

foreach ($tag_id as $term){
    $term_arr[]=$term['term'];

 }

 print_r($term_arr);
然后你可以用

   $stm =$db->prepare("SELECT user_id FROM sign WHERE term IN (:term_0,:term_1,:ts.id, s.term, s.counter, os.user_id, os.id, COUNT(oserm_2,:term_3,:term_4,:term_5,:term_6,:term_7,:term_8,:term_9,:term_10)");

$term_0="$term_arr[0]";
    $term_1="$term_arr[1]";
    $term_2="$term_arr[2]";
    $term_3="$term_arr[3]";
    $term_4="$term_arr[4]";

假设$tag\u id是mysql查询的数组输出

$t = array();
foreach ($tag_id as $term){
    $t[]=$term['term']; // create array of terms 
 }
$str = "'".implode("','",$t)."'"; // make it a string, you can add here any other string you want to complete your query
    $stm =$db->prepare("SELECT `user_id` FROM `sign` WHERE `term` IN (".$str.");
$stm =$db->execute(); 

$terms.=$term['term'].';
而不是
$term=$term['term'.]。
。请注意
=
。但是,既然您只需要将它们放在一个数组中,只需执行
$terms[]=$term['term'.];
即可将它们全部放在一个数组中,而不必使用
$term=explode('''.$term);
为什么不使用SQL join?