2014-02-20 17 views
1

權所有存在的MySQL的數據這是我的代碼我有一個upload.php的,這是工作的罰款,但我必須補充丟失我的表中的數據通過上傳CSV文件,但它不工作,只要我上傳CSV它自動生成新的ID並保存它,但我的問題是例如,如果我有一個表格ID號是12現在我必須插入電話號碼,該字段有所有信息除了手機沒有,那麼我該怎麼辦我可以上傳一個CSV文件,可以通過以上相同的ID。隨着PHP

ID名稱電子郵件電話 12 XYS [email protected]

現在

通過CSV我必須只能上傳手機內無

  <?php 
      require_once('../web.config.php'); require_once(ROOT_PATH.'global.php'); 
      require_once('function.php'); 
      ?> 
      <!DOCTYPE html> 
      <title>Home</title> 
      </head><body> 
      <div id="control_box" class="indexWrap"> 
       <div id="container"> 
       <div id="form"> 
        <?php 
      define('DB_SERVER', 'localhost'); 
      define('DB_USER', 'root'); 
      define('DB_PASSWORD', ''); 
      define('DB_NAME', 'upcsv'); 

      @$conn = mysql_connect (DB_SERVER, DB_USER, DB_PASSWORD); 
      mysql_select_db (DB_NAME,$conn); 
      mysql_set_charset('UTF8', $conn) or die(mysql_error()); 
      if(!$conn){ 
       die("Sorry! There seems to be a problem connecting to our database."); 
      } 

      function get_file_extension($file_name) { 
       return end(explode('.',$file_name)); 
      } 

      function errors($error){ 
       if (!empty($error)) 
       { 
         $i = 0; 
         while ($i < count($error)){ 
         $showError.= '<div class="msg-error">'.$error[$i].'</div>'; 
         $i ++;} 
         return $showError; 
       }// close if empty errors 
      } // close function 
      if (isset($_POST['upfile'])){ 
      // check feilds are not empty 
      if(get_file_extension($_FILES["uploaded"]["name"])!= 'csv') 
      { 
      $error[] = 'Only CSV files accepted!'; 
      } 
      if (!$error){ 
      $tot = 0; 
      $handle = fopen($_FILES["uploaded"]["tmp_name"], "r"); 
      fgets($handle); 
      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
       for ($c=0; $c < 1; $c++) { 
         //only run if the first column if not equal to id 
         if($data[0] !='id'){ 
          mysql_query("INSERT INTO tabledb(
               `id`, 
               `name`, 
               `email`, 
               `phone` 
          )VALUES(
               '" . mysql_real_escape_string($data[0 ])."', 
               '" . mysql_real_escape_string($data[1 ])."', 
               '" . mysql_real_escape_string($data[2 ])."', 
               '" . mysql_real_escape_string($data[3 ])."' 
               )")or die(mysql_error()); 
         } 

       $tot++;} 
      } 
      fclose($handle); 
      $content.= "<div class='success' id='message'> CSV File Imported, $tot records added </div>"; 

      }// end no error 
      }//close if isset upfile 

      $er = errors($error); 
      $content.= <<<EOF 
      <h3>Import CSV Data</h3> 
      $er 
      <form enctype="multipart/form-data" action="" method="post"> 
       File:<input name="uploaded" type="file" maxlength="20" /><input type="submit" name="upfile" value="Upload File"> 
      </form> 
      EOF; 
      echo $content; 
      ?> 
       </div> 
       </div> 
      </div> 
      <!-- END TEMPORARY CONTENT --> 
      </body> 
      </html> 
+3

您可以使用「插入」,這始終會創建一個新的行。如果你不想改變現有的行,使用「更新」。 – Seb

+0

但CSV也將有新的數據量太大,即插入,爲此,我們需要創建一個新的ID,並提交該數據也 – user3283373

+1

這是確定。你必須弄清楚數據是否存在 - >更新或者它是否是新的 - >插入。或者你可以嘗試「插入重複鍵更新」-mysql語法。 – Seb

回答

0

有出頭這是不清楚,但我會盡力回答您提供的信息的基礎上。

你提到如果表單ID是20則應如果這種形式ID爲「Prinmary關鍵」甚至唯一索引,那麼你問題可以通過更換查詢來解決添加電話號碼。

由於您使用的INSERT查詢將始終在表中插入新行嘗試用戶REPLACE查詢,它將首先嚐試找到相同的索引或主鍵如果它得到,那麼它將刪除/更新(取決於您的表存儲引擎)舊行。如果它刪除舊行,那麼它會插入新行。

REPLACE INTO tabledb(
         `id`, 
         `name`, 
         `email`, 
         `phone` 
         )VALUES(
         '" . mysql_real_escape_string($data[0 ])."', 
         '" . mysql_real_escape_string($data[1 ])."', 
         '" . mysql_real_escape_string($data[2 ])."', 
         '" . mysql_real_escape_string($data[3 ])."' 
         ) 

您可以使用下面的查詢..

隨意,如果您有任何問題喲問。

+1

餘米不等tankful你它是如此簡單,非常感謝 – user3283373

+0

歡迎您! :) – Haroon

相關問題