请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 176|回复: 0

[技术分享] Discuz论坛数据库插入帖子

[复制链接]
  • TA的每日心情
    郁闷
    2024-6-11 19:06
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    升级   100%

    36

    主题

    3

    回帖

    716

    积分

    管理员

    积分
    716

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2024-5-28 20:01:51 | 显示全部楼层 |阅读模式
    1. procedure TNormNpc.ActionofDISCUZADD(PlayObject: TPlayObject;QuestActionInfo: pTQuestActionInfo);    //insermysql
    2.   var
    3.      title,content,fieldall,values,stime,fid,fieldall2,values2,table,setvalue:  string  ;
    4.      field      :array[0..9]  of string;
    5.      fieldvalue :array[0..9]  of string;
    6.      sLine     :array[0..9]  of string;
    7.         dJavaStart,nowtime: TDateTime;
    8.      i,n18,n14,tid1,pid1,threads,todayposts:integer;

    9.      myQuery1: TUniQuery;

    10.   begin
    11.      if not Form3.rzchckbx1.Checked then
    12.       begin
    13.         ScriptActionError(PlayObject, '',QuestActionInfo, 'mysql未开启');
    14.        exit;
    15.       end;
    16.     if (QuestActionInfo.sParam1  ='') or (QuestActionInfo.sParam2  ='')  or (QuestActionInfo.sParam3  ='')then
    17.     begin
    18.       ScriptActionError(PlayObject, '', QuestActionInfo, sSC_DISCUZADD);
    19.       Exit;
    20.     end;
    21.     n18 := QuestActionInfo.nParam1;
    22.     if n18 >= 1 then
    23.     begin

    24.       title   := QuestActionInfo.sParam4;
    25.       content := QuestActionInfo.sParam5;
    26.       dJavaStart := StrtoDateTime('1970-01-01 8:00:00');
    27.       nowtime :=Now;
    28.       stime:= INTTOSTR(MinutesBetween(nowtime, dJavaStart)*60);


    29.            sLine[0]:=  'subject|'+title;
    30.            sLine[1]:=   'author|'+QuestActionInfo.sParam2  ;
    31.            sLine[2]:=   'authorid|'+inttostr(QuestActionInfo.nParam3)  ;
    32.            sLine[3]:=   'dateline|'+stime ;
    33.            sLine[4]:=   'lastpost|'+stime ;
    34.            sLine[5]:=   'fid|'+inttostr(n18) ;
    35.            sLine[6]:=   'lastposter|'+QuestActionInfo.sParam2 ;
    36.       fieldvalue[0]:= GetValidStr3(sLine[0], field[0], ['/', ',', '|']);
    37.       fieldvalue[1]:= GetValidStr3(sLine[1], field[1], ['/', ',', '|']);
    38.       fieldvalue[2]:= GetValidStr3(sLine[2], field[2], ['/', ',', '|']);
    39.       fieldvalue[3]:= GetValidStr3(sLine[3], field[3], ['/', ',', '|']);
    40.       fieldvalue[4]:= GetValidStr3(sLine[4], field[4], ['/', ',', '|']);
    41.       fieldvalue[5]:= GetValidStr3(sLine[5], field[5], ['/', ',', '|']);
    42.       fieldvalue[6]:= GetValidStr3(sLine[6], field[6], ['/', ',', '|']);


    43.        table:='pre_forum_thread';
    44.       //DISCUZADD 板块ID 发布者ID 发布者UID 标题  内容

    45.      IF NOT Form3.connectmysql(Form3.myConnection) THEN EXIT;



    46.       try
    47.          myQuery1:=TUniQuery.Create(nil);
    48.          myQuery1.Connection:=form3.myConnection;
    49.          if (field[0]<>'')and( fieldvalue[0] <>'') then begin
    50.           fieldall:=  field[0];
    51.           values:=''''+fieldvalue[0]+'''';
    52.         end;
    53.       for i:=1 to 9 do begin
    54.          if (field[i]<>'')and( fieldvalue[i] <>'') then begin
    55.             fieldall:=  fieldall+','+field[i];
    56.             values:=  values+','+''''+fieldvalue[i]+'''';
    57.          end;
    58.        end;


    59.            //   PlayObject.SysMsg(format('insert into %s %s VALUES %s',[table,fieldall,values]), c_Green, t_Hint);

    60.            fieldall:='('+fieldall+')';
    61.             values:='('+values+')';
    62.              with MyQuery1 do
    63.              begin
    64.               close;
    65.               sql.Clear;
    66.               SQL.Text := format('insert into %s %s VALUES %s',[table,fieldall,values]);
    67.              // PlayObject.SysMsg(SQL.Text, c_Green, t_Hint);
    68.               ExecSQL;
    69.             end;





    70.            with MyQuery1 do
    71.            begin
    72.            close;
    73.               sql.Clear;
    74.               SQL.Text :='select @@Identity as fid';
    75.               open;
    76.               if RecordCount >0 then fid := FieldByName('fid').AsString ;

    77.            end;
    78.                  with MyQuery1 do
    79.                  begin
    80.                    close;
    81.                    sql.Clear;
    82.                    SQL.Text :='Select MAX(tid) AS getfield  From pre_forum_thread ';
    83.                    open;
    84.                     if RecordCount >0 then tid1:= FieldValues['getfield'] ;
    85.                   // PlayObject.SysMsg(inttostr(tid1), c_Green, t_Hint);
    86.                   end;
    87.                  with MyQuery1 do
    88.                  begin
    89.                    close;
    90.                    sql.Clear;
    91.                    SQL.Text :='Select MAX(pid) AS getfield  From pre_forum_post_tableid ';
    92.                    open;
    93.                     if RecordCount >0 then pid1:= FieldValues['getfield'] ;
    94.                     // PlayObject.SysMsg(inttostr(pid1), c_Green, t_Hint);
    95.                   end;

    96.                   pid1:=pid1+1;

    97.   fieldvalue[0]:='';
    98.   field[0]:='';
    99.            sLine[0]:=   'pid|'+INTTOSTR(pid1);
    100.            fieldvalue[0]:= GetValidStr3(sLine[0], field[0], ['/', ',', '|']);


    101.                  with MyQuery1 do
    102.                  begin
    103.                    close;
    104.                    sql.Clear;
    105.                    SQL.Text :=format('insert INTO pre_forum_post_tableid  (%s) VALUES (%s)',[field[0],fieldvalue[0]]);
    106.                    ExecSQL;
    107.                   end;


    108.   for i:=0 to 9  do fieldvalue[i]:='';
    109.   for i:=0 to 9  do field[i]:='';
    110.            sLine[0]:=   'pid|'+INTTOSTR(pid1);
    111.            sLine[1]:=   'tid|'+INTTOSTR(tid1)  ;
    112.            sLine[2]:=   'fid|'+INTTOSTR(n18)  ;
    113.            sLine[3]:=   'subject|'+title ;
    114.            sLine[4]:=   'message|'+content ;
    115.            sLine[5]:=   'author|'+QuestActionInfo.sParam2 ;
    116.            sLine[6]:=   'authorid|'+inttostr(QuestActionInfo.nParam3) ;
    117.            sLine[7]:=   'first|1' ;
    118.            sLine[8]:=   'dateline|'+stime ;


    119.       fieldvalue[0]:= GetValidStr3(sLine[0], field[0], ['/', ',', '|']);
    120.       fieldvalue[1]:= GetValidStr3(sLine[1], field[1], ['/', ',', '|']);
    121.       fieldvalue[2]:= GetValidStr3(sLine[2], field[2], ['/', ',', '|']);
    122.       fieldvalue[3]:= GetValidStr3(sLine[3], field[3], ['/', ',', '|']);
    123.       fieldvalue[4]:= GetValidStr3(sLine[4], field[4], ['/', ',', '|']);
    124.       fieldvalue[5]:= GetValidStr3(sLine[5], field[5], ['/', ',', '|']);
    125.       fieldvalue[6]:= GetValidStr3(sLine[6], field[6], ['/', ',', '|']);
    126.       fieldvalue[7]:= GetValidStr3(sLine[7], field[7], ['/', ',', '|']);
    127.       fieldvalue[8]:= GetValidStr3(sLine[8], field[8], ['/', ',', '|']);


    128.         if (field[0]<>'')and( fieldvalue[0] <>'') then begin
    129.           fieldall:=  field[0];
    130.           values:=''''+fieldvalue[0]+'''';
    131.         end;
    132.       for i:=1 to 9 do begin
    133.          if (field[i]<>'')and( fieldvalue[i] <>'') then begin
    134.             fieldall:=  fieldall+','+field[i];
    135.             values:=  values+','+''''+fieldvalue[i]+'''';
    136.          end;
    137.        end;
    138.             table:='pre_forum_post';
    139.             fieldall:='('+fieldall+')';
    140.             values:='('+values+')';

    141.         //    PlayObject.SysMsg(format('insert into %s %s VALUES %s',[table,fieldall,values]), c_Green, t_Hint);


    142.              with MyQuery1 do
    143.              begin
    144.               close;
    145.               sql.Clear;
    146.               SQL.Text := format('insert into %s %s VALUES %s',[table,fieldall,values]);
    147.              // PlayObject.SysMsg(SQL.Text, c_Green, t_Hint);
    148.               ExecSQL;
    149.             end;



    150.     fieldvalue[0]:='';
    151.     field[0]:='';
    152.            sLine[0]:=   'fid|'+inttostr(n18);
    153.            fieldvalue[0]:= GetValidStr3(sLine[0], field[0], ['/', ',', '|']);

    154.                   with MyQuery1 do
    155.                     begin
    156.                     close;
    157.                     sql.Clear;
    158.                     SQL.Text :=format('Select *  From pre_forum_forum where %s =%s',[field[0],fieldvalue[0]]);
    159.                     open;
    160.                     if RecordCount >0 then begin
    161.                      threads:= MyQuery1.FieldValues['threads'] ;
    162.                      todayposts:= MyQuery1.FieldValues['todayposts'] ;
    163.                      threads:=threads+1;
    164.                      todayposts:=todayposts+1;
    165.                      end;
    166.                   end;

    167.   for i:=0 to 9  do fieldvalue[i]:='';
    168.   for i:=0 to 9  do field[i]:='';
    169.            sLine[0]:=   'lastpost|'+title;
    170.            sLine[1]:=   'todayposts|'+INTTOSTR(todayposts)  ;
    171.            sLine[2]:=   'threads|'+INTTOSTR(threads)  ;
    172.            sLine[8]:=            'fid|'+INTTOSTR(n18)  ;




    173.       fieldvalue[0]:= GetValidStr3(sLine[0], field[0], ['/', ',', '|']);
    174.       fieldvalue[1]:= GetValidStr3(sLine[1], field[1], ['/', ',', '|']);
    175.       fieldvalue[2]:= GetValidStr3(sLine[2], field[2], ['/', ',', '|']);

    176.      fieldvalue[8]:= GetValidStr3(sLine[8], field[8], ['/', ',', '|']);
    177.      if (field[0]<>'')and( fieldvalue[0] <>'') then begin
    178.          setvalue:=  field[0]+'='+ ''''+ fieldvalue[0]+'''';
    179.      end;
    180.       for i:=1 to 6 do begin
    181.         if (field[i]<>'')and( fieldvalue[i] <>'') then begin
    182.            setvalue:= setvalue+','+ field[i]+'='+ ''''+  fieldvalue[i]+'''';
    183.         end;
    184.        end;

    185.             table:='pre_forum_forum';
    186.             fieldall:='('+fieldall+')';
    187.             values:='('+values+')';

    188.                    with MyQuery1 do
    189.                     begin
    190.                      close;
    191.                    //  SQL.Text := format('update pre_forum_forum set lastpost=%s threads=%s,todayposts=%s  where fid=%s',[title,threads,todayposts,field[0],fieldvalue[0] ]);
    192.                           SQL.Text := format('update %s set %s where %s=%s',[table,setvalue,field[8],fieldvalue[8]] );
    193.                   //  PlayObject.SysMsg(SQL.Text, c_Green, t_Hint);
    194.                     ExecSQL;
    195.                    end;
    196.          finally

    197.         MyQuery1.Free;
    198.       end;
    199.    end;
    200.   end;
    复制代码

    传奇单机社区免责声明

    1、传奇单机社区所有资源均来源于互联网网友交流发布,并非本站制作,所有个人言论并不代表本站立场,与本站立场无关,本站不会对其內容负任何责任。若无意中侵犯到您的版权利益,敬请来信联系我们,我们将及时进行处理,并致以最深的歉意。

     

    2、传奇单机社区中所有资料、资源文件均来自于网络搜索,仅作为技术学习研究以及单机娱乐之用,请必须在24小时内删除所下载文件,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。

     

    3、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!

     

    本站联系信箱:93635993@qq.com

    点击右侧快捷回复。 传奇单机社区感谢你的支持!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    网站统计|网站地图| ( 蜀ICP备2023020120号-3 )

    GMT+8, 2024-7-17 21:21 , Processed in 0.055180 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表