destoon 多表联合查询时出现解析错误,parse_str函数解析错误
数据库前缀 wb_
标签 ,调用文章时获取评论数量
<!--{php $tags=tag("table=article_24 a left join wb_comment_stat c on c.itemid=a.itemid&condition=status>2 and level=1&pagesize=3&order=hits desc&template=null");}-->
出现结果 sql语句 SELECT * FROM wb_article_24 a left join wb WHERE status>2 and level=1 ORDER BY hits desc LIMIT 0,3
include/tag.func.php 中调试
在parse_str函数前后分别输出 $parameter print_r($par);
echo $parameter."<br>";
parse_str($parameter, $par);
print_r($par);
$parameter结果:
table=article_24 a left join wb_comment_stat c on c.itemid=a.itemid&condition=status>2 and level=1&pagesize=3&order=hits desc&template=null 这里正常
print_r($par);的结果
Array ( [table] => article_24 a left join wb [#95;comment_stat_c_on_c_itemid] => a.itemid [condition] => status>2 and level=1 [pagesize] => 3 [order] => hits desc [template] => null )
可以看出 print_r 函数把 wb_ 后的_编码成了_ 然后解析成了两个变量。为什么会这样????
解决方案,把wb_换成destoon_后解析正常,所以 在标签里用destoon_ 然后再parse_str后 获取到$table 后 替换成wb_
<!--{php $tags=tag("table=article_24 a left join destoon_comment_stat c on c.itemid=a.itemid&condition=status>2 and level=1&pagesize=3&order=hits desc&template=null");}-->
然后再tag.func.php 大概100行 $table = str_replace('_', '_', $table); 之后加入
$table = str_replace('destoon_', $prefix, $table); //解决烦人的wb_问题,前缀是wb时 parse_str解析有问题,