请帮我解释一下一个PHPmySql语句,在线等
语句是这样的:SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid<>'$fid' AND f.fid=t.fid AND t.digest in (1,2,3) ORDER BY t.dateline DESC LIMIT 0, 12
我看不懂 {$tablepre} ,{$tablepre},高手帮我分析一下

解决方案 »

  1.   

    这个应该是变量替换,在类似BLOG程序中会比较常用。比如你设置你的WORDPRESS数据表前缀为123_,那么所有的表都会以类似123_comments, 123_authors这样出现。这样就可以在一个数据库中同时host若干个用户的wp数据。
      

  2.   

    高手,请用一个MSSQL语句进行翻译一下,谢谢
      

  3.   

    跟在from后面的只有只有几种情况
    要么是表 要么是视图 要么是个带括号的查询语句
    看你前面那窜他应该是个表或者是视图
    不会是个带括号的查询语句
      

  4.   

    MSSQL??? 不好意思,没有搞过。我还以为是类似wordpress+smarty的变量替换呢。
      

  5.   

    "SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid <>'$fid' AND f.fid=t.fid AND t.digest in (1,2,3) ORDER BY t.dateline DESC LIMIT 0, 12"完整写应该加上双引号,双引号里面{$tablepre}其实就是直接引用程序中变量$tablepre的值替换内容。你找找外面$tablepre变量,替换掉就是完整的查询语句了。
      

  6.   

    php中字符串中可以带变量 但是必须是双引号的字符串 。如下
    $tablepre = 'cdb_';
    下边
    "SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid <>'$fid' AND f.fid=t.fid AND t.digest in (1,2,3) ORDER BY t.dateline DESC LIMIT 0, 12" 
    就变成
    "SELECT t.*, f.name FROM cdb_threads t, cdb_forums f WHERE t.fid <>'$fid' AND f.fid=t.fid AND t.digest in (1,2,3) ORDER BY t.dateline DESC LIMIT 0, 12" 
      

  7.   

    我给你解释一下
    $fid 是版块id
    查找版块id为$fid之外的精华主题,12条
    {$tablepre}是表前缀如 cdb_  discuz安装时会要求指定表前缀