> 백엔드 개발 > PHP 튜토리얼 > Dede에서 SQL과 함께 PHP 태그를 사용하는 방법

Dede에서 SQL과 함께 PHP 태그를 사용하는 방법

墨辰丷
풀어 주다: 2023-03-25 20:40:02
원래의
1645명이 탐색했습니다.

이 글은 주로 Dede에서 SQL과 함께 PHP 태그를 사용하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 좋습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

  {dede:php} 

    //echo 'vvvv'; 

    {/dede:php}  

       

{dede:php} 

   

//print_r($refObj->Fields); 

$sql = "select ars.*, art.typedir from dede_archives AS ars  

        LEFT JOIN dede_arctype AS art ON ars.typeid=art.id  

        where typeid=2 ORDER BY weight ASC "; 

$dsql->SetQuery($sql);//将SQL查询语句格式化 

$dsql->Execute();//执行SQL操作 

//通过循环输出执行查询中的结果 

while($row = $dsql->GetArray()){ 

    $link   = $refObj->Fields['indexurl'].'/'.$row['typedir'].'/'.$row['id']; 

    $link   = str_replace('{cmspath}', '', $link); 

    $class  = "ahy"

    if($refObj->Fields['id'] == $row['id']) $class="ahytt"

   

    echo &#39;<a href="&#39;.$link.&#39;.html" class="&#39;.$class.&#39;">&#39;; 

    echo $row[&#39;title&#39;]; 

    echo &#39;</a> &#39;; 

{/dede:php}

로그인 후 복사


{dede:sql} 태그 사용

sql 태그는 데이터베이스를 쿼리하여 출력합니다.

1입니다. 예를 들어, 게시된 총 기사 수를 계산해 보겠습니다. 아이디어는 dede_addonarticle 기사의 추가 테이블 내용의 총 수를 출력하는 것입니다.

1

2

3

4

5

{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"

   

[field:name = "nums"/] 

   

{/dede:sql}

로그인 후 복사

2. ~field~를 사용하여 특별한 쿼리를 수행합니다. 예를 들어 이전에는 포럼의 많은 회원이 현재 기사를 게시하고 있는 회원의 관련 콘텐츠를 출력해야 했습니다. 이전에는 각 기사 때문에 sql 또는 arclist 태그를 사용하는 것이 불가능했습니다. 내용이 다릅니다. 여기서는 5.5 SQL 문을 데모로 사용합니다.

먼저 기사 템플릿의 해당 위치에 다음 태그를 추가합니다.

1

2

3

{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"

 [field:id/], DEDE模板  

 {/dede:sql}

로그인 후 복사

이것을 article_article.htm 페이지에 넣으면 현재 회원이 게시한 관련 기사가 검색됩니다. 여기 ~작가~는 환경을 기반으로 합니다. 현재 콘텐츠의 변수 쿼리를 실행하기 전에 대체를 수행합니다.

SQL 문에서 조건부 쿼리에 나타나는 ~writer~는 다음과 같습니다. 즉, $refObj->Fields[$value]의 해당 내용입니다.

템플릿에 PHP를 사용합니다.

많은 사람들이 DreamWeaver의 템플릿 태그는 PHP 실행 기능을 추가하여 더욱 유연해졌습니다. 여기 DedeCMS V5.5에는 PHP를 실행할 수 있는 특수 태그인 {dede:php}{/dede:php}가 추가되어 있습니다.

다음은 몇 가지 일반적인 예입니다.

1. 가장 간단한 출력 내용:

1

2

3

4

5

6

{dede:php} 

$numA = 1; 

$numB = 2; 

echo $numA + $numB

  

{/dede:php}

로그인 후 복사

{dede:php}에서 정보를 출력하려면 print, echo 등을 직접 사용하여 인쇄하고 할당하면 됩니다. @me에 대한 값이 유효하지 않음

이 출력의 내용은 계산 결과입니다:

1

3

로그인 후 복사

2. SQL 쿼리와 결합하여 단일 내용을 출력합니다.

1

2

3

4

{dede:php} 

 $row = $dsql->GetOne(&#39;select id,typename from dede_arctype where id=2&#39;); 

 print_r($row); 

 {/dede:php}

로그인 후 복사

이 출력의 내용은

1

2

3

4

5

Array 

[id] => 2 

[typename] => 问答 

)

로그인 후 복사

3입니다. . 현재 페이지의 변수 가져오기

예를 들어 여기서는 시스템 배경 [Template]-[Global Mark Test]를 입력하고 코드에 다음 내용을 입력합니다.

1

2

3

4

{dede:php} 

 print_r($refObj->Fields); 

   

 {/dede:php}

로그인 후 복사


가져오려면 PHP에서 특정 필드 값을 지정하려면 $refObj->Fields 개체를 사용하여 열을 가져올 수 있습니다. 제목 가져오기 => 환경 변수 test를 살펴보겠습니다. 여기서는 로컬 열을 테스트로 사용합니다.

1

2

3

4

5

6

7

8

9

10

11

Array 

 

 [typeid] => 0 

 [phpurl] => /plus 

 [indexurl] => / 

 [templeturl] => /templets 

 [memberurl] => /member 

 [specurl] => /special 

 [indexname] => 主页 

 [templetdef] => /templets/default 

 )

로그인 후 복사

이러한 방식으로 현재 페이지의 로컬 변수를 검색합니다. 다음으로 이전 SQL 문을 결합하여 다양한 환경 ID를 구현할 수 있습니다.

예:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Array 

 

 [id] => 3 

 [reid] => 0 

 [topid] => 0 

 [sortrank] => 1 

 [typename] => 产品 

 [typedir] => {cmspath}/product 

 … … 

 [indexname] => 主页 

 [templetdef] => /templets/default 

 [position] => 主页 > 产品 > 

 [title] => 产品 

 )

로그인 후 복사

이는 현재 열의 제목을 호출하는 것입니다. 이 레이블 함수는 {dede:field.typename/}과 유사합니다.

다음으로 쿼리를 실행하여 sql 및 출력 변수를 처리합니다.

1

2

3

4

5

{dede:php} 

 $thisid = $refObj->Fields[&#39;id&#39;]; 

 $row = $dsql->GetOne(&#39;select id,typename from dede_arctype where id=&#39;.$thisid); 

 print_r($row); 

 {/dede:php}

로그인 후 복사

이런 방식으로 쿼리 결과가 기본 템플릿에 나타나는 관련 변수로 대체된 다음 출력 문자열이 생성되고 모든 문자열 정보가 $revalue에 저장됩니다.

마지막으로 이 값을 반환합니다. return $revalue;

전체 파일의 내용은 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$dsql->Execute(&#39;me&#39;,$sql); 

while($rs = $dsql->GetArray(&#39;me&#39;)) 

//根据属性处理查询变量 

$rs[&#39;title&#39;] = cn_substr($rs[&#39;title&#39;], $titlelen); 

//获取底层模板 

$ctp->LoadSource($innertext); 

foreach($ctp->CTags as $tagid=>$ctag) { 

if(!empty($rs[strtolower($ctag->GetName())])) { 

$ctp->Assign($tagid,$rs[$ctag->GetName()]); DEDE模板  

//根据底层模板及查询变量得到处理结果 

$revalue .= $ctp->GetResult(); 

}

로그인 후 복사

다음으로 태그를 테스트해 보겠습니다. article_article.htm 템플릿을 수정하고 여기에 다음 태그 코드를 추가합니다.

관련 권장 사항 :

dedecms5.7 최신 sql 익스플로잇 guestbook.php 주입 취약점

dedecms SESSION 변수 덮어쓰기로 인해 SQL 주입 common.inc.php 솔루션

PHP 명령어 주입 dedecs 원격 쓰기 파일 링크 예시 공유

위 내용은 Dede에서 SQL과 함께 PHP 태그를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿