我试图让以下内容在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手册页面
执行一个或多个由分号。