【问题标题】:Insert sql query result to a new query将sql查询结果插入新查询
【发布时间】:2014-11-08 21:15:39
【问题描述】:

所以任务是:

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

到目前为止我有什么:
$Conn = odbc_connect("..."); $Result = odbc_exec("选择..."); 而($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...
           }
?>

【问题讨论】:

  • 为什么不在循环内填充一些数组,以便在循环外使用新数组?

标签: php sql


【解决方案1】:

在while循环外定义数组

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

在while循环中使用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
}

【讨论】:

  • 谢谢,它工作正常。但我在 if 语句中全部使用它......所以 $data 在 if 语句中变为空。新的麻烦...
  • @Daria 需要查看更新您问题的完整代码。如果有帮助请采纳答案
  • 我会质疑的。
  • 该死!它在 if 语句之外起作用,但在 if ($_REQUEST['user_action'] == 'action1') 内部它是空的!怎么了??上帝..
  • @Daria 它应该可以正常工作。可能问题出在其他地方。
【解决方案2】:

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

$arr ='';

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-04
        • 2015-12-07
        • 2013-12-25
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        相关资源
        最近更新 更多