0

コンテンツ タイプがあるポータルで作業しています。このポータルを作成したフロント エンド開発者は、添付ファイル用の CCK フィールドを追加しました。また、コアによって指定された添付ファイル フィールドが既に存在します。私もわからないので、なぜ彼がそうしたのかについては議論しません。

ここで、その CCK フィールドを削除する必要があります。直接削除すると、このフィールドによってアップロードされたすべてのデータが失われ、テーブルが削除されます。

そのため、このCCKフィールドテーブルの値をデフォルトのアップロードテーブルに置き換え、ファイルテーブルのファイルパスを更新して、添付ファイルが表示されるようにしようとしています。

私はPHPやMySQLがあまり得意ではないので、皆さんからの助けを求めています..

これが私が書いた基本的なコードです...修正を提案してください。そうすることでリモートサーバーDBに接続できるか教えてください-

<?php

mysql_connect("http://edlabs.in/connect:22","connect","");
mysql_select_db("connect");

for($i=0; $i<=1; $i++){

    $fid_cck = array(mysql_query("SELECT field_upload_doc_fid FROM content_field_upload_doc WHERE field_upload_doc_list > 0"));
    $fid_core = array(mysql_query("SELECT fid FROM upload"));

    foreach($fid_cck as $fid_cck_value){

        foreach($fid_core as $fid_core_value)
        {
            if($fid_cck_value != $fid_core_value){

                $file_name = mysql_query("SELECT filename FROM files WHERE fid = $fid_cck");
                $nid_cck = mysql_query("SELECT nid FROM field_upload_doc_fid WHERE fid = $fid_cck");
                $vid_cck = mysql_query("SELECT vid FROM field_upload_doc_fid WHERE fid = $fid_cck");

                mysql_query("INSERT INTO upload VALUES('$fid_cck', '$nid_cck', '$vid_cck', '$file_name', 1, 0)");

                $filepath = array(mysql_query("SELECT filepath FROM files WHERE fid = $fid_cck"));

                $new_filepath = str_replace("/background_docs", "", $filepath);

                mysql_query("UPDATE files SET filepath=$new_filepath WHERE fid = $fid_cck");

            }
        }
    }


}
?>
4

1 に答える 1

1

次の手順に従ってこの問題を解決しました-

  1. ローカル phpmyadmin でポータルと同じ名前の DB を作成しました。
  2. ポータルの DB から content_field_upload_doc、files、upload という名前の 3 つのテーブルをエクスポートしました。
  3. いくつかのMySQLクエリを使用してカスタムPHPコードを作成し、クエリを作成し、content_field_upload_docにあるがアップロードテーブルにないファイルのDIFFを見つけ、テーブルファイルからその名前を選択しました(以下のコードを提供しています)。
  4. 私のワンプでコードを実行し、INSERT クエリをエコーし​​ました。
  5. すべてのクエリをコピーし、ポータル DB の phpmyadmin で SQL を使用して実行しました。
  6. パブリックフォルダー内の以前に使用されたフォルダーからすべてのファイルをコピーし、それをデフォルトのパブリックフォルダーに貼り付けました。
  7. コンテンツ タイプから CCK フィールドを削除しました...これで完了です..!

    die('Could not connect: ' . mysql_error()); } そうしないと{
    mysql_select_db("connect");
    
    $rs_fudl = mysql_query("SELECT vid, nid, field_upload_doc_fid FROM content_field_upload_doc WHERE field_upload_doc_list > '0'");
    while($rs_fudl_row = mysql_fetch_array($rs_fudl))
    {
    
        $fid_fudl = $rs_fudl_row['field_upload_doc_fid'];
    
        $rs_file = mysql_query("SELECT filename,filepath FROM files WHERE fid = '$fid_fudl'");
    
        //echo mysql_num_rows($rs_file)."<br />";
    
        while($rs_file_row = mysql_fetch_array($rs_file)){
    
                $rs_upload = mysql_query("SELECT * FROM upload where fid='".$fid_fudl."'");
    
                if ( mysql_num_rows($rs_upload) == 0) {
    
                /*  $new_filepath = str_replace("/background_docs", "", $rs_file_row['filepath']);
    
                    $filepath = $new_filepath;
                */
                    $filename = $rs_file_row['filename'];
                    $vid_fudl = $rs_fudl_row['vid'];
                    echo "<br />";
    
                    $nid_fudl = $rs_fudl_row['nid'];
                    echo "<br />";
    
                    echo "INSERT INTO upload VALUES ('$fid_fudl','$nid_fudl', '$vid_fudl', '$filename','1', '0');" ;
                    echo "<br />";
                //  echo "UPDATE files SET filepath= '$filepath' WHERE fid = '$fid_fudl';";     
    
                }
        }
    }
    mysql_close($con);
    
    } ?>
于 2012-06-07T13:26:28.770 に答える