我试图让以下内容在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行
我误解了临时表可以在这里实现什么?
答案 0 :(得分:1)
在multi_query()
中使用PHP mysqli
或将它们分成两个单独的查询(单独运行)
如果这意味着向$dbOb->
添加此类功能以运行DB_runMultiQuery(您必须编写)而不是调用$dbOb->DB_runQuery
,那么您就必须这样做。
执行一个或多个由a连接的查询 分号。