我代表我的一小部分用户提出这个问题.

一旦他们使用的脚本获得21个ID,它将生成以下错误:

The SELECT would examine more than

MAX_JOIN_SIZE rows; check your WHERE

and use SET SQL_BIG_SELECTS=1 or SET

SQL_MAX_JOIN_SIZE=# if the SELECT is

okay

问题是它们在共享主机上,因此无法更改其MySQL设置以修复错误.

有什么我可以写入我的脚本,以便他们没有这个问题?

这是根据加载的模块生成数据库查询的函数:

$sql =’SELECT a.id as id,a.address as address’;

$query = 'SELECT'

. ' name AS module_name'

. ', databasename AS module_database'

. ', pregmatch AS module_pregmatch'

. ', pregmatch2 AS module_pregmatch2'

. ', html AS module_html'

. ', sqlselect AS database_sqlselect'

. ', sqljoin AS database_sqljoin'

. ', sqlupdatewithvalue AS database_sqlupdatewithvalue'

. ', sqlupdatenovalue AS database_sqlupdatenovalue'

. ' FROM #__aqsgmeta_modules'

. ' WHERE enabled = 1'

. ' ORDER BY id';

$db->setQuery($query);

$results = $db->loadObjectList();

if (count($results) != 0) {

foreach ($results as $result) {

$sqlselect .= ', ';

$sqlselect .= $result->database_sqlselect;

$sqljoin .= ' ';

$result->database_sqljoin = preg_replace('/\{DATABASENAME\}/Ui', $result->module_database, $result->database_sqljoin);

if (!(preg_match("/" . $result->database_sqljoin . "/Ui", $sqljoin)))

$sqljoin .= $result->database_sqljoin;

}

}

if ($use_sh404sef)

$sqlselect .= ', g.oldurl AS sefurl';

$sql .= $sqlselect;

$sql .= ' FROM #__aqsgmeta_address AS a';

$sql .= $sqljoin;

if ($use_sh404sef)

$sql .= ' LEFT JOIN #__redirection AS g ON g.newurl = a.address';

$sql .=

//. ' WHERE a.id IN (' . $cids . ')'

' WHERE a.id = ' . $id

. ' ORDER BY a.address asc,a.id '

;

$db->setQuery($sql);

$rows = $db->loadObjectList();

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐