2012-01-15 90 views
-4

我做了以下腳本來上傳一個CSV並將其導入到我的MYSQL數據庫,這是我的工作測試,它工作得很好。第二個例子中,我添加了所有的字段以便導入,但現在它沒有做太多的工作,它沒有給出任何錯誤,只要我現在嘗試導入任何東西,它就會在頁面上打印以下內容:PHP代碼中的錯誤,我似乎無法找到:-(

編輯>> >>>>>

有沒有一種方法可以將下面的INSERT IGNORE消息變成某種可用的錯誤消息?正如目前它只是回顯insert命令而不是實際向我顯示任何類型的錯誤? 。

     Import Successful : name 
    - INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation, leadname, business, address, town, county, postcode, phone, email, gasoiluser, dervuser, kerouser, annualconsgasoil, annualconsderv, annualconskero, gasoilmargin, dervmargin, keromargin, fueldetails, lubesdetails, otherdetails, sentletterday, sentlettermonth, sentletteryear, sentpostcardday, sentpostcardmonth, sentpostcardyear, sentquoteday, sentquotemonth, sentquoteyear, lastvisitedday, lastvisitedmonth, lastvisitedyear, receivegasoilmailinglist, receivedervmailinglist, receivekeromailinglist, gasoilmailinglist, dervmailinglist, keromailinglist, mailtype, createdby) VALUES ('salutation','name','business name','address','town','county','postcode','phone','email','gasoil user','derv user','kero user','annual consumption gas oil','annual consumption derv','annual consumption kero','gas oil margin','derv margin','kero margin','fuel details','lubes details','other details','sent letter day','sent letter month','sent letter year','sent postcard day','sent postcard month','sent postcard year','sent quote day','sent quote month','sent quote year','last visited day','last visited month','last visited year','mailtype','receive gasoil mailing list frequency','receive derv mailing list frequency','receivekero mailing list frequency','gasoil mailing list','derv mailinglist','kero mailinglist') 

這是我最初的測試代碼我用來檢查上傳和導入功能工作正常:

<?php 
    //database connect info here 

    //check for file upload 
    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){ 

     //upload directory 
     $upload_dir = "./csv"; 

     //create file name 
     $file_path = $upload_dir . $_FILES['csv_file']['name']; 

     //move uploaded file to upload dir 
     if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) { 

      //error moving upload file 
      echo "Error moving file upload"; 

     } 

     //open the csv file for reading 
     $handle = fopen($file_path, 'r'); 


     while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) { 

      //Access field data in $data array ex. 
      $leadname = $data[0]; 
      $postcode = $data[1]; 
      $phone = $data[2]; 
      echo 'Import Successful : '; 
      echo $leadname; 
      echo '<br/>'; 

      //Use data to insert into db 
      $sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (leadname, postcode, phone) VALUES ('%s','%s','%s')", 
         mysql_real_escape_string($leadname), 
         mysql_real_escape_string($postcode), 
         mysql_real_escape_string($phone) 
         ); 
      mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql")); 
     } 


     //delete csv file 
     unlink($file_path); 
    } 
    ?> 

然後我去上添加了所有領域現在.......由於某種原因,它沒有導入,只是在頁面頂部打印消息。我知道我可能已經錯過了某個地方,但是我無法爲我的生活找到它。

<?php 
    //database connect info here 

    //check for file upload 
    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){ 

     //upload directory 
     $upload_dir = "./csv"; 

     //create file name 
     $file_path = $upload_dir . $_FILES['csv_file']['name']; 

     //move uploaded file to upload dir 
     if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) { 

      //error moving upload file 
      echo "Error moving file upload"; 

     } 

     //open the csv file for reading 
     $handle = fopen($file_path, 'r'); 


     while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) { 

      //Access field data in $data array ex. 
         $salutation = $data[0]; 
         $leadname = $data[1];       
         $business = $data[2]; 
         $address = $data[3]; 
         $town = $data[4]; 
         $county = $data[5]; 
         $postcode = $data[6]; 
         $phone = $data[7];       
         $email = $data[8]; 
         $gasoiluser = $data[9]; 
         $dervuser = $data[10]; 
         $kerouser = $data[11]; 
         $annualconsgasoil = $data[12]; 
         $annualconsderv = $data[13]; 
         $annualconskero = $data[14]; 
         $gasoilmargin = $data[15]; 
         $dervmargin = $data[16]; 
         $keromargin = $data[17]; 
         $fueldetails = $data[18]; 
         $lubesdetails = $data[19]; 
         $otherdetails = $data[20];       
         $sentletterday = $data[21]; 
         $sentlettermonth = $data[22]; 
         $sentletteryear = $data[23]; 
         $sentpostcardday = $data[24]; 
         $sentpostcardmonth = $data[25]; 
         $sentpostcardyear = $data[26];       
         $sentquoteday = $data[27]; 
         $sentquotemonth = $data[28]; 
         $sentquoteyear = $data[29]; 
         $lastvisitedday = $data[30]; 
         $lastvisitedmonth = $data[31]; 
         $lastvisitedyear = $data[32]; 
         $receivegasoilmailinglist = $data[33]; 
         $receivedervmailinglist = $data[34]; 
         $receivekeromailinglist = $data[35]; 
         $gasoilmailinglist = $data[36]; 
         $dervmailinglist = $data[37]; 
         $keromailinglist = $data[38]; 
         $mailtype = $data[39];      
         $createdby = $data[40]; 

      echo 'Import Successful : '; 
      echo $leadname; 
      echo '<br/>'; 

      //Use data to insert into db 
      $sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation, leadname, business, address, town, county, postcode, phone, email, gasoiluser, dervuser, kerouser, annualconsgasoil, annualconsderv, annualconskero, gasoilmargin, dervmargin, keromargin, fueldetails, lubesdetails, otherdetails, sentletterday, sentlettermonth, sentletteryear, sentpostcardday, sentpostcardmonth, sentpostcardyear, sentquoteday, sentquotemonth, sentquoteyear, lastvisitedday, lastvisitedmonth, lastvisitedyear, receivegasoilmailinglist, receivedervmailinglist, receivekeromailinglist, gasoilmailinglist, dervmailinglist, keromailinglist, mailtype, createdby) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", 
         mysql_real_escape_string($salutation), 
         mysql_real_escape_string($leadname),        
         mysql_real_escape_string($business), 
         mysql_real_escape_string($address), 
         mysql_real_escape_string($town), 
         mysql_real_escape_string($county), 
         mysql_real_escape_string($postcode), 
         mysql_real_escape_string($phone),       
         mysql_real_escape_string($email), 
         mysql_real_escape_string($gasoiluser), 
         mysql_real_escape_string($dervuser), 
         mysql_real_escape_string($kerouser), 
         mysql_real_escape_string($annualconsgasoil), 
         mysql_real_escape_string($annualconsderv), 
         mysql_real_escape_string($annualconskero), 
         mysql_real_escape_string($gasoilmargin), 
         mysql_real_escape_string($dervmargin), 
         mysql_real_escape_string($keromargin), 
         mysql_real_escape_string($fueldetails), 
         mysql_real_escape_string($lubesdetails),  
         mysql_real_escape_string($otherdetails),        
         mysql_real_escape_string($sentletterday), 
         mysql_real_escape_string($sentlettermonth), 
         mysql_real_escape_string($sentletteryear), 
         mysql_real_escape_string($sentpostcardday), 
         mysql_real_escape_string($sentpostcardmonth), 
         mysql_real_escape_string($sentpostcardyear),        
         mysql_real_escape_string($sentquoteday), 
         mysql_real_escape_string($sentquotemonth), 
         mysql_real_escape_string($sentquoteyear), 
         mysql_real_escape_string($lastvisitedday), 
         mysql_real_escape_string($lastvisitedmonth), 
         mysql_real_escape_string($lastvisitedyear), 
         mysql_real_escape_string($mailtype), 
         mysql_real_escape_string($receivegasoilmailinglist), 
         mysql_real_escape_string($receivedervmailinglist), 
         mysql_real_escape_string($receivekeromailinglist), 
         mysql_real_escape_string($gasoilmailinglist), 
         mysql_real_escape_string($dervmailinglist), 
         mysql_real_escape_string($keromailinglist),       
         mysql_real_escape_string($createdby) 
         ); 
      mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql")); 
     } 


     //delete csv file 
     unlink($file_path); 
    } 
    ?> 
+4

歡迎堆棧溢出! SO並不意味着成爲一個「調試我的代碼」的網站 - 如果你正在尋找這個網站,你應該聘請一位專家爲你做,因爲這可能是一項相當大的任務。如果您在處理此問題時遇到*特定技術問題,請隨時編輯相應的問題。你可能需要做的是逐步調試 – 2012-01-15 11:29:12

+0

對不起,我只是想,如果我在我的代碼中犯了一個明顯的錯誤,有人可以馬上看到,因爲我沒有編寫這麼長的代碼,所以它可能更少的錯字和更多的我在某處使用錯誤的語法。 – user1148760 2012-01-15 11:33:25

+0

是的,我明白了。但是,在這麼多的代碼中發現一個錯誤是非常困難的 - 調試可能是要走的路。不要擔心,這是正常的 - 我們已經經歷了很多次:) – 2012-01-15 11:40:00

回答

0

這並不在PHP工作:

mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql")); 

兩個問題:

  • 你不使用 「和」 這種方式;改爲創建控制結構。

  • 您正在運行ROLLBACK命令和然後查詢的SQL錯誤 - 這可能會覆蓋mysql_error()的價值。

試試這個錯誤處理:

$error = mysql_query($sql); 

if (!$query) 
{ 
    echo mysql_error() . " - $sql"; 
    mysql_query("ROLLBACK"); 
    die(); 
} 
+0

啊謝謝!,現在我收到錯誤了,這是什麼意思?,列計數與第1行的值計數不匹配 - – user1148760 2012-01-15 12:00:05

+0

是否意味着我沒有足夠的值與插入的列的數量相比? – user1148760 2012-01-15 12:00:38

+0

@user yup,這意味着您插入的列數與實際在表中的列數不匹配。 – 2012-01-15 12:01:07

相關問題