将sql查询结果插入新查询

时间:2014-09-15 10:55:14

标签: php sql

所以任务是:

    1. 从表中执行Select * *之类的查询。
    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...
           }
?>

4 个答案:

答案 0 :(得分:2)

在循环中定义数组

$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
}

答案 1 :(得分:2)

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

$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;            
   }
}

答案 2 :(得分:1)

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

$arr ='';

while($row = odbc_fetch_array($Result)) { 

    $arr .= '\''.$row['some_field'].'\','; 
} 

$arr = trim($arr, ",");

$query = "SELECT * from table where some_field IN ($arr)";

答案 3 :(得分:0)

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

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