0

我正在使用有内容类型的门户网站。制作此门户的前端开发人员为文件附件添加了 CCK 字段,并且核心已经提供了文件附件字段。现在我们不会去讨论他为什么这样做,因为我也不知道。

现在我必须删除那个 CCK 字段,如果我直接删除,我将丢失该字段上传的所有数据,因为它会删除它的表。

所以现在我正在尝试将此 CCK 字段表中的值替换为默认上传表并更新文件表中的文件路径..以便它可以查看附加文件。

因为我不太擅长 PHP 或 MySQL,所以我正在向你们寻求帮助..

这是我编写的基本代码...请提出更正建议并告诉我这样做我是否能够连接远程服务器数据库-

<?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 中创建了一个与我的门户同名的数据库。
  2. 从我的门户的数据库中导出了三个名为 content_field_upload_doc、文件和上传的表。
  3. 用一些 MySQL 查询编写了一个自定义 PHP 代码,以进行查询并查找那些在 content_field_upload_doc 但不在上传表中的文件的 DIFF,并从表文件中选择该文件的名称。(我在下面给出代码)。
  4. 在我的 wamp 上运行代码并回显 INSERT 查询。
  5. 复制所有查询并在门户数据库的 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 回答