使用SELECT FROM创建临时表未按预期工作


CREATE TEMPORARY TABLE with SELECT FROM not working as expected

我试图让以下内容在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特定的代码和标记),结果集显示在临时表"coursesearch"中。然而,在php中运行代码会给出以下标准错误消息:

错误:DB类:1064:您的SQL语法有错误;在第14行的"SELECT*FROM coursesearch"附近查看与MySQL服务器版本对应的手册,以获得正确的语法。

我从谷歌和mysql网站的研究中了解到,一旦脚本完成,临时表就会消失,但我肯定会在脚本完成之前输出结果集。我尝试过使用别名,并在所有字段前面加上各自的表名,也尝试过在PHP中不加反标记,但问题仍然存在,

第14行"SELECT*FROM coursesearch"附近

我是否误解了临时桌子在这里可以实现的目标??

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

如果这意味着在$dbOb->中添加这样的功能来运行DB_runMultiQuery(您必须编写),而不是调用$dbOb->DB_runQuery,那么这就是您必须要做的

多查询上的PHP手册页面

执行一个或多个由分号。