将sql查询结果插入到新查询中


Insert sql query result to a new query

所以任务是:

    1. 执行类似Select*from table的查询
    1. 取一些单元格值
    1. 将此值插入到新查询中

到目前为止我有什么:
$Conn=odbc_connect("…");$Result=odbc_exec("选择…");while($r=odbc_fetch_array($Result))//在表格中显示结果

这里看起来我应该使用r数组并插入像一样的数据

$var = r['some_field'];
$query = 'Select * from table where some_field = {$var}";

但是,我如何用值填充这个数组,以及如何使它在while循环之外可用?这里我使用的是odbc,但没关系,我需要算法。谢谢

整个代码看起来像:

<?php
$data = array();
$state = 'false';
if($_REQUEST['user_action']=='')
{
    $Conn = odbc_connect("...");
    $data = array();     
    if($_REQUEST['name']!='')
    {                                                 
        $Result = odbc_exec($Conn, "select ...");
        //Showing result table
        while($r = odbc_fetch_array(Result))
        {                 
            array_push($data, $r['cardgroup']); 
            $state = 'true';     
        }
            //   print_r($data);  WORKS;             
    }    
}  
if ($_REQUEST['user_action'] == 'action1')
           {     
                //I need to use $data HERE. Doesn't work
                // $state = 'false' here...
           }
?>

循环时定义外部数组

$data = array();//defining
while($r = odbc_fetch_array($Result))

循环时在内部使用array_push()

array_push($data, $r['some_field']);

然后尝试在循环外打印完整数据的数组

print_r($data);

更新


$data = array();放在第一个IF语句的顶部。试试这个代码:

$data = array();//at top   
if($_REQUEST['user_action']=='')
{
    $Conn = odbc_connect("...");  
    if($_REQUEST['name']!='')
    {                                                 
        $Result = odbc_exec($Conn, "select ...");
        //Showing result table
        while($r = odbc_fetch_array(Result))
        {                 
            array_push($data, $r['cardgroup']); 
        }
            //   print_r($data);  WORKS;             
    }    
}  
if ($_REQUEST['user_action'] == 'action1')
{     
      //print_r($data) works here also
}

尝试这样的方法将数据存储在数组中

$allrows = array();
while($r = odbc_fetch_array( $result )){
    $allrows[] = $r;
}

使用foreach循环打印或根据您的选择使用

foreach($allrows as $singlerow) {
   //use it as you want, for insert/update or print all key value like this
   foreach($singlerow as $key => $value) {
       //echo $key . '=='. $value;            
   }
}

你可以试试这个,因为我理解你的查询,希望这是你的答案

$arr ='';
while($row = odbc_fetch_array($Result)) { 
    $arr .= ''''.$row['some_field'].''','; 
} 
$arr = trim($arr, ",");
$query = "SELECT * from table where some_field IN ($arr)";

您的所有任务都可以在单个查询中完成

INSERT INTO table2 (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM table1