将数据从localhost保存到在线

时间:2017-07-13 05:28:21

标签: php mysql

我正在尝试使用PHP将来自localhost数据库的数据保存到我们的实时服务器数据库中。我得到了一个成功的响应,但每当我尝试检查我们的实时数据库服务器时,其中没有数据或数据未插入或更新。

我得到的回应是这样的#34;导入成功!在patient.file"中共找到4条记录。即使我导入的文件只是数据。

这是我的代码:

<?php

      //============FUNCTIONS=================
       function export_table($target_table,$sdate,$edate,$station){

          $i = mysql_num_rows(mysql_query("DESCRIBE $target_table"));

          $get_columns = mysql_query("SHOW COLUMNS FROM " . $target_table);
            while($row_columns = mysql_fetch_array($get_columns)){
             $column_name = $row_columns['Field'] . "|";
              $csv_output .= $column_name;
               }

                $csv_output = rtrim($csv_output, "|");
                $csv_output .= "\r\n";

               $values = mysql_query("SELECT * FROM ".$target_table." WHERE 
             dateEncoded >= '2017-07-01' and dateEncoded <= '2017-07-07'");
             while ($rowr = mysql_fetch_row($values)) {
             for ($j=0;$j<$i;$j++) {
             if($rowr[$j] == NULL){$rowr[$j] = "NULL";}
if($j==($i-1)){$csv_output .= str_replace(array("\n", "\r"), '', $rowr[$j]);
    }else{$csv_output .= str_replace(array("\n", "\r"), '', $rowr[$j])."|";}
}// end for
$csv_output .= "\r\n";
    }// end while

     return $csv_output;
        }// end function export_table


 //========CREATION OF THE FILE===========================
       include_once "../ewcfg8.php";
       include_once "../dbcon.php";
       date_default_timezone_set('Asia/Manila');
       ini_set('memory_limit', '-1');
       set_time_limit(0);


    // $startdate = '2017-06-01';
   // $enddate = '2017-07-07'; ;

   // $defaulStation = $_POST['defaultStation'];



$tables = array('patient',
            'tb_adr',
            'tb_case',
            'tb_casecomment',
            'tb_comorbidity',
            'tb_consilium',
            'tb_consultations',
            'tb_contact',
            'tb_pe',
            'tb_prescript',
            'tb_prevcase',
            'tb_resultculture',
            'tb_resultgx',
            'tb_resultdst',
            'tb_resultdstdrug',
            'tb_resulthiv',
            'tb_resultxray',
            'tb_symptom',
            'tb_resultdssm',
            'tb_dot');


   //put tables in an array within an array(make a multi-dimensional array)

$dl_table = array();
foreach ($tables as $table) {
$content = export_table($table,$startdate,$enddate,$defaulStation); 
$dl_table[$table] = $content;//multi-dimensional array


 }
   //@mysql_close($con); //close localhost connection
  //=========INSERTING VALUES TO DATABASE===============
//===============Open New Connection And Connect to Live Database========
    $dbhost = "http/mywebsite.example";
    $localport = "3306";
    $dbuser = "user";
    $dbpass = "12345";
    $dbname = "myonlinedb";


     $conn = mysql_connect($dbhost, $dbuser, $dbpass);
        if(! $conn ) {
    die('Could not connect: ' . mysql_error());
     }
     mysql_select_db($dbname, $conn);

    $fieldseparator = "|";
    $lineseparator = "\n";

foreach ($tables as $table) {
        $databasetable = $table;
         $csvfile = $dl_table[$table]; //variable that hold the multi-dimensional array
        $lines = 0;
        $header = 0;
        $queries = "";
        $linearray = array();
        $columns = array();

    //====================================Get the Columns (First line in the CSV)===================================
           while(($header == 0 && $columns = fgetcsv(${$table},0,"|")) != false){
              $header = 1;
              $num_columns = count($columns);
              $list_columns = "";
              for ($c=0; $c < $num_columns; $c++) {
              $list_columns .= "`" . $columns[$c] . "`" . ", ";
              }
              $list_columns = substr($list_columns,0,-2);
              //echo $list_columns . "<br /><br />";
              break;
          }// close while(($columns = fgetcsv($file,0,"|")) !== false && $header == 0)
    //====================================Get the contents of the CSV===================================
    //Set the header to skip the first row
    $header = 0;
    //opening the csv file
    // $size = filesize($csvfile);
    // echo $size;
    // if(!$size) {echo "File is empty.\n";}
    // $csvcontent = fread($file,$size);
    // fclose($file);

    //foreach(split($lineseparator,$csvcontent) as $line) 
    foreach(explode($lineseparator,$csvfile) as $line) {
        //if($header == 0){
            //$header = 1;
        //}else{

            $lines++;
            $line = trim($line," \t");
            $line = str_replace("\r","",$line);

            /************************************
            This line escapes the special character. remove it if entries are already escaped in the csv file
            ************************************/
            $line = str_replace("'","\'",$line);
            /*************************************/
            $linearray = explode($fieldseparator,$line);

            //*********get the csvID id and the columns in the db table to know if an insert or update will be performed****************
            if ($databasetable == "patient"){
                $csvID = $linearray[2];
                $searchField = "patientID";
            }else if($databasetable == "tb_case"){
                $csvID = $linearray[0];
                $searchField = "caseID";
            }else if($databasetable == "tb_resultdstdrug"){
                $csvID = $linearray[1]. $linearray[2];
                $searchField = "CONCAT(caseIDplus, series)";
            }else{
                $csvID = $linearray[1]. $linearray[2];
                $searchField = "CONCAT(caseID, series)";
            }   
            //***********convert id of each row to 0*******************************
            if($databasetable != "tb_case"){$linearray['0'] = '';} 

            //*****************search the csvID in the database************************************
            $searchID = mysql_query("SELECT * FROM $databasetable WHERE $searchField = '$csvID'");
            //******************count the number of columns in csv and the db table**************
            $countcsv = count($linearray);
            $countColumns = $num_columns;
            //$countColumns = mysql_num_fields($searchID);
            //****************count if the csvID exists in the database********************************
            $countResults  = mysql_num_rows($searchID);
            //*************************get the date encoded in the csv and db table***************
            $row = mysql_fetch_assoc($searchID);
            $db_dateEncoded = $row['dateEncoded'];
            if($databasetable == "tb_dot"){$csv_dateEncoded = $linearray[($countcsv-3)];}
            else{$csv_dateEncoded = $linearray[($countcsv-2)];}
            //*****************if else statement for checking number of fields****************************************
            if ($countResults > 0){
                //if a result was found, UPDATE the row
                if ($csv_dateEncoded>$db_dateEncoded){
                    // if table is dot, delete all dot of the tb_case
                    $query = "UPDATE $databasetable SET ";
                    $i = 1;
                    while ($i < $countColumns){
                        $meta = mysql_fetch_field($searchID, $i);
                        if($linearray[$i] == "NULL"){
                            $query .=  $columns[$i] . "=" . $linearray[$i];
                            //if last field
                            if($i == ($countColumns-1)){$query .= " WHERE $searchField = '$csvID';";}else{$query .= ",";}
                        }else{
                            $query .=  $columns[$i] . "='" . $linearray[$i];
                            //if last field
                            if($i == ($countColumns-1)){$query .= "' WHERE $searchField = '$csvID';";}else{$query .= "',";}
                        }//end if($linearray[$i] == "NULL")
                        $i = $i + 1;
                    }//close while ($i < $countColumns)
                }// end if($csv_dateEncoded>=$db_dateEncoded)

            }else{//if no id was found, INSERT a new row
                //$query = "INSERT INTO $databasetable VALUES(";
                if($databasetable == 'patient'){$query = "INSERT INTO $databasetable VALUES(";}
                else{$query = "INSERT INTO $databasetable ($list_columns) VALUES(";}
                $i = 0;
                while ($i < $countColumns){
                    if($linearray[$i] == "NULL"){
                        $query .= $linearray[$i];
                        if($i == ($countColumns-1)){$query .= ");";}else{$query .= ",";}
                    }else{
                        $query .= "'" . $linearray[$i];
                        if($i == ($countColumns-1)){$query .= "');";}else{$query .= "',";}
                        }
                    $i = $i + 1;
                }//end While

            }// close if ($countResults > 0){
            //$queries .= $query . "\n";
            //print "$query<br />";
            @mysql_query($query);

        //}//close if($header == 0)
    }// close foreach(split($lineseparator,$csvcontent) as $line)

    //unlink("data_uploading/files/" . $user . "/" . $databasetable . ".csv");
    echo "Import successful! Found a total of $lines records in $table.file.\n<br /><br />";
    //mysql_close($conn);
    @mysql_close($con);

    //====================================Get the Contents===================================
}//close foreach ($tables as $table)
//rmdir("data_uploading/files/" . $user);
  //==========END OF INSERTING VALUES TO DATABASE ===========

0 个答案:

没有答案