MySQL 错误 'Only constant XPATH queries are supported' 解决方法
这个错误是因为在 'updatexml' 函数中使用了 'select' 语句,而该函数只支持常量的 XPATH 查询。
要修改这个语句,可以使用其他方式来实现相同的功能,例如:
- 使用 'concat' 函数拼接字符串,将查询结果作为字符串返回:
SELECT COUNT(1) FROM ( SELECT COUNT(1) FROM mi_users WHERE id BETWEEN 1 AND 200 AND network_id != '' GROUP BY network_id ) a WHERE updatexml(1,concat(0x7e,(SELECT CONCAT(table_name,' is here') FROM information_schema.tables WHERE table_schema=0x616161 LIMIT 1),0x7e),1)!=''
这个语句中,使用 'concat' 函数将查询结果拼接成字符串,并将其作为参数传递给 'updatexml' 函数。同时,添加一个额外的 WHERE 条件来过滤掉 'updatexml' 函数返回空值的情况。
- 使用 'union all' 查询来将结果合并:
SELECT COUNT(1) FROM ( SELECT COUNT(1) FROM mi_users WHERE id BETWEEN 1 AND 200 AND network_id != '' AND 1=0 UNION ALL SELECT 1 FROM information_schema.tables WHERE table_schema=0x616161 LIMIT 1 ) a WHERE updatexml(1,concat(0x7e,(SELECT table_name FROM information_schema.tables WHERE table_schema=0x616161 LIMIT 1),0x7e),1)!=''
这个语句中,使用 'union all' 查询将 'mi_users' 表和 'information_schema.tables' 表的查询结果合并。同时,添加一个额外的 WHERE 条件来过滤掉 'updatexml' 函数返回空值的情况。
注意,这些修改仅供参考,具体的实现方式需要根据具体情况进行调整。
原文地址: https://www.cveoy.top/t/topic/nKTq 著作权归作者所有。请勿转载和采集!