【问题标题】:Insert into tempTable and Select From tempTable queries inside while loop在 while 循环内插入 tempTable 和 Select From tempTable 查询
【发布时间】:2019-11-30 10:16:53
【问题描述】:

我有一个 PHP 循环,其中包含两个 sql 查询。一个是 INSERT INTO a temp_Table。另一个是 SELECT * FROM temp_Table。 SELECT 语句执行了多次,我的结果不正确,因为有重复。有没有办法在所有 INSERT INTO 语句都执行完之后只执行一次 SELECT 语句?

while(odbc_fetch_row($gotdaysreports)){

 $insertQuery = "insert into temp_Table (
   REPORTNR,
   ACCOUNTNO,
   ACCOUNTNAME,
   USERNAME,
   TOTALVALUE,
   TOTALTAX,
   DISCOUNT,
   DISCTAX,
   DISCOUNT )select  * from SUPPLIER_PURCHASES( $company_id,$branchindex,$regionindex,$dayendid ,$accountnumber)";

$selectQuery = "select * from temp_Table";  
}

$gotinsertQuery = odbc_exec($connect, $insertQuery);

$gotselectQuery = odbc_exec($connect, $selectQuery);

选择语句应该在 INSERTS 完成后运行一次。目前,它为每个插入执行。

【问题讨论】:

  • 所以把它从循环中去掉,不是吗?
  • ...另外,上面的代码只会插入一个(循环中的最后一个),因为您在每次迭代时都覆盖了$insertQuery-变量。它也只会进行一次选择。您目前实际上并没有做任何事情,只是在循环中一遍又一遍地定义相同的变量。
  • @PatrickQ 插入依赖于 while 循环。存储过程中的两个参数在循环中被赋值
  • 正确,但将选择从循环中取出。

标签: php sql select sql-insert temp-tables


【解决方案1】:

只要把它放在while循环之外,连接插入语句,它就会像一个魅力一样工作。

 while(odbc_fetch_row($gotdaysreports)){

 $insertQuery.= "insert into temp_Table (
   REPORTNR,
   ACCOUNTNO,
   ACCOUNTNAME,
   USERNAME,
   TOTALVALUE,
   TOTALTAX,
   DISCOUNT,
   DISCTAX,
   DISCOUNT )select  * from SUPPLIER_PURCHASES( $company_id,$branchindex,$regionindex,$dayendid ,$accountnumber);";

}
 $selectQuery = "select * from temp_Table"; 

$gotinsertQuery = odbc_exec($connect, $insertQuery);

$gotselectQuery = odbc_exec($connect, $selectQuery);

【讨论】:

  • 谢谢大家-@Patrick Q。我听从了你的建议,它奏效了。
猜你喜欢
  • 1970-01-01
  • 2012-07-14
  • 2011-02-16
  • 2014-09-15
  • 1970-01-01
  • 2019-11-08
  • 2020-09-16
  • 2015-10-30
  • 1970-01-01
相关资源
最近更新 更多