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

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

墨辰丷
墨辰丷원래의
2018-05-15 16:20:011547검색

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

  {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 기사의 추가 테이블 내용의 총 수를 출력하는 것입니다.

{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}  
  
[field:name = "nums"/]  
  
{/dede:sql}

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

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

 {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. 가장 간단한 출력 내용:

  {dede:php}  
  $numA = 1;  
  $numB = 2;  
  echo $numA + $numB;  
   
  {/dede:php}

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

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

  3

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

 {dede:php}  
  $row = $dsql->GetOne(&#39;select id,typename from dede_arctype where id=2&#39;);  
  print_r($row);  
  {/dede:php}

이 출력의 내용은

  Array  
  (  
  [id] => 2  
  [typename] => 问答  
  )

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

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

 {dede:php}  
  print_r($refObj->Fields);  
   
  {/dede:php}


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

 Array  
  (  
  [typeid] => 0  
  [phpurl] => /plus  
  [indexurl] => /  
  [templeturl] => /templets  
  [memberurl] => /member  
  [specurl] => /special  
  [indexname] => 主页  
  [templetdef] => /templets/default  
  )

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

예:

 Array  
  (  
  [id] => 3  
  [reid] => 0  
  [topid] => 0  
  [sortrank] => 1  
  [typename] => 产品  
  [typedir] => {cmspath}/product  
  … …  
  [indexname] => 主页  
  [templetdef] => /templets/default  
  [position] => 主页 > 产品 >  
  [title] => 产品  
  )

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

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

 {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;

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

$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으로 문의하세요.