使用SELECT FROM创建TEMPORARY TABLE不按预期工作

时间:2015-12-06 02:56:46

标签: php mysql

我试图让以下内容在php中运行:

<?php

$qry="CREATE TEMPORARY TABLE IF NOT EXISTS `coursesearch` AS (

     SELECT  `TREKKER_ID`, `TREKKER_COMPANY`, `TREKKER_FULLDISPLAYNAME`, `TREKKER_POSTCODE`, 
             `TREKKER_ACTIVE`, `TREKKER_SUBSCRIBOPN`, `tbl_trials`.*, 
             `EROUTE_RIDERID`, `EROUTE_FKID`, `EROUTE_EXPIRYDATE` 

      FROM `tbl_trekks`, 
           `tbl_trials`, 
           `tbl_scores`

      WHERE `TREKKER_POSTCODE`" . $pcode .
      " AND `tbl_trials`.`TRIALID` = `tbl_trekks`.`TREKKER_ID`";

      if( $checkscores===true ) 
      {
          $qry.=" OR (`tbl_scores`.`EROUTE_RIDERID` = `tbl_trekks`.`TREKKER_ID` 
                  AND `tbl_scores`.`EROUTE_FKID` <> 0)";
      }


$qry.= "); SELECT * FROM `coursesearch`;";

if(   !is_array($arr = $dbOb->DB_runQuery("slt", $qry ))   ) { return 0; }
else {
    print_r( $arr );
}   

?>

我已经在phpMyAdmin控制台中直接测试了它(这显然没有特定于php的代码和标签),结果集显示在临时表&#39; coursesearch&#39;中。但是,在php中运行代码会出现此标准错误消息:

  

错误:数据库类:1064:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在&#39; SELECT * FROM coursesearch&#39;附近使用正确的语法。在第14行。

我从google和mysql网站的研究中了解到,一旦脚本完成,临时表就会消失,但我肯定会在脚本完成之前输出结果集。香港专业教育学院尝试使用别名并在所有字段前添加各自的表名称,也尝试在PHP中没有反引号 - 但问题仍存在于同一行,

  

near&#39; SELECT * FROM coursesearch&#39;在第14行

我误解了临时表可以在这里实现什么?

1 个答案:

答案 0 :(得分:1)

multi_query()中使用PHP mysqli或将它们分成两个单独的查询(单独运行)

如果这意味着向$dbOb->添加此类功能以运行DB_runMultiQuery(您必须编写)而不是调用$dbOb->DB_runQuery,那么您就必须这样做。

Multi Query

上的PHP手册页
  

执行一个或多个由a连接的查询   分号。