2016-08-18 2 views
1

를 반환 2.5 Joomla를 1.5에서 joomfish (Joomla를 변환 구성 요소) 업그레이드 스크립트입니다 : 코드의Joomfish 마이그레이션 스크립트는 다음 오류

$db = new PDO("mysql:host=localhost;dbname=db;charset=UTF8", "root", "pass"); 

$stmt = $db->prepare("select distinct(jfc.reference_id),c.catid,jfc.language_id,c.modified,c.modified_by,c.version,c.modified_by ,c.ordering,c.created_by,c.metadesc ,c.created_by_alias from jos_jf_content jfc ,jos_content c where jfc.reference_id = c.id and jfc.reference_table = 'content' "); 
$stmt->execute(); 

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    foreach($results as $row) { 

     $count_row = $db->prepare("select * from jos_jf_content where reference_id = ? and language_id = ?"); 
     $count_row->bindValue(1, $row['reference_id']); 
     $count_row->bindValue(2, $row['language_id']); 

     $lang_code = $db->prepare("select lang_code from j25_languages where lang_id = ?"); 
     $lang_code->bindValue(1, $row['language_id']); 
     $lang_code->execute(); 
     $l_code = $lang_code->fetch(PDO::FETCH_OBJ); 
     $language_code = $l_code->lang_code; 

     $count_row->execute(); 

      $title =""; 
      $fulltext =""; 
      $introtext =""; 
      $alias =""; 
      $published =""; 

     while($col = $count_row->fetch(PDO :: FETCH_ASSOC)) 
     { 
      if($col['reference_field'] == "title") 
        { 
         $title = $col['value']; 
        } 
        if($col['reference_field'] == "fulltext") 
        { 
         $fulltext = $col['value']; 
        } 
        if($col['reference_field'] == "introtext") 
        { 
         $introtext = $col['value']; 
        } 
        if($col['reference_field'] == "alias") 
        { 
         $alias = $col['value']; 
        } 
        $published = $col['published']; 

     } 

    $exe = $db->prepare("insert into j25_content (`title`,`alias`,`introtext`,`fulltext`,`published`,`catid`,`created`,`created_by`,`created_by_alias`,`modified`,`modified_by`,`version`,`ordering`,`metadesc`,`language`) values(:title,:alias,:introtext,:fulltext,:published,:categoryid,:created,:created_by,:created_by_alias,:modified,:modified_by,:version,:ordering,:metadesc,:language_code)"); 

    $exe->execute(array(':title' => $title,':alias' => $alias,':introtext' => addslashes($introtext),':fulltext' => addslashes($fulltext),':published' => ".$published.",':categoryid' => $row['catid'],':created' => date("Y-m-d H:i:s"),':created_by' => $row['created_by'],':created_by_alias' => "".$row['created_by_alias']."",':modified' => date("Y-m-d H:i:s"),':modified_by' =>$row['modified_by'],':version' => $row['version'],':ordering' => $row['ordering'],':metadesc' => $row['metadesc'],':language_code' => $language_code)); 

    $i = $db->lastInsertId('id'); 

    $asst = $db->prepare("select asset_id from j25_categories where id = ? "); 
    $asst->bindValue(1, $row['catid']); 
    $asst->execute(); 
    $asst_id = $asst->fetch(PDO::FETCH_OBJ); 
    $cassetid = $asst_id->asset_id; 

    $sel = $db->prepare("select lft,rgt FROM `j25_assets` where id = (SELECT max(id) FROM `j25_assets`)"); 
    $sel->execute(); 
    $select = $sel->fetch(PDO::FETCH_OBJ); 
    $left = $select->lft; 
    $right = $select->rgt; 
    $left=$left+1; 
    $right = $right+1; 

    $stmt = $db->prepare("insert into j25_assets (`parent_id`,`lft`,`rgt`,`level`,`name`,`title`) values(:cassetid,:left,:right,:level,:name,:title)"); 
    $stmt->execute(array(':cassetid' => $cassetid,':left' => $left,':right' => $right,':level' => 4,':name' => "com_content.article.".$i,':title' => $title)); 

    $insertedId = $db->lastInsertId('id'); 

    $update = $db->prepare("update j25_content set asset_id = ? where id = ?"); 
    $update->bindValue(1, $insertedId); 
    $update->bindValue(2, $i); 
    $update->execute(); 

    $stmt = $db->prepare("insert into j25_jf_translationmap (language,reference_id,translation_id,reference_table) values (:language_code,:reference_id,:translation_id,:content)"); 
    $stmt->execute(array(':language_code' => $language_code,':reference_id' => $row['reference_id'],':translation_id' => $i,':content' => 'content')); 
} 

라인 :

$language_code = $l_code->lang_code; 

결과 :

비 객체의 속성을 얻으려고 시도합니다.

나는 스크립트 작성자가 아니며 PHP에서는 좋지 않지만 나는 print_r($l_code->lang_code);을 시도했으며 예상 결과는 en-GB에서 [lang_code] => en-GB으로 바뀌었다. 이 코드에서 변경해야 할 사항은 무엇입니까? 감사.

답변

1

라인 $language_code = $l_code->lang_code > 0;$language_code을 부울 값으로 설정합니다. 결과를 디버그하려면 var_dump($l_code);var_dump($language_code);을 시도하십시오. $l_code가 실제로 객체인지 확인하거나 null이 반환되었는지 확인해야합니다. 희망이 도움이됩니다.

+0

미안하지만 실제로는 $ l_code-> lang_code입니다. not $ l_code-> lang_code> 0; i'v는 이미 질문에서 그것을 바꿉니다. – rocco

+0

하지만 조언 덕분에 고마워! – rocco

+0

@rocco 다행스럽게도 그것을 분류 할 수있었습니다 ... – jpaljasma