2012-01-15 18 views
-4

私はcsvをアップロードしてMYSQL DBにインポートするために以下のスクリプトを作成しました。これは私の動作テストでしたが、うまくいきました。 2番目の例では、インポートするにはすべてのフィールドを追加しましたが、現在は何もエラーが発生していないので、何もインポートしようとしなくても、そのまま次のページに印刷されます:phpコードで見つからないバグ:-(

EDIT >> >>>>>

INSERT IGNOREメッセージを以下のような使用可能なエラーメッセージにする方法はありますか?現時点では、実際には何らかのエラーを表示する代わりに挿入コマンドをエコーし​​ますか? 。

     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は、「デバッグ・マイ・コード」サイトではありません。あなたが探しているものなら、おそらく専門家を雇って、あなたのためにやってみるべきでしょう。問題に取り組んでいる*特定の*技術的な質問がある場合は、それに応じて質問を自由に編集してください。おそらくあなたがする必要があるのは、ステップバイステップのデバッグです。 –

+0

申し訳ありません、私はちょうど私が長い間コーディングしていないので、私の誤植のどこかに間違った構文を使用しています。 – user1148760

+0

ええ、私は理解しています。しかし、この大量のコードで間違いを見つけ出すのは本当に難しいことです。おそらくデバッグはやり方です。心配しないで、それは正常です - 私達は何度もそれを経験しています:) –

答えて

0

これはPHPで動作しません:

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

二つの問題:

  • あなたは "と" このように使用しないでください。代わりに制御構造を作ります。おそらくmysql_error()の値を上書きします -

  • あなたは、SQLエラーを照会するROLLBACKコマンドとその後、を実行しています。

エラー処理のためにこれを試してみてください:

$error = mysql_query($sql); 

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

ああありがとう!列の数が行1の値の数と一致しません - – user1148760

+0

これは、挿入する列の量と比較して十分な値を持っていないことを意味しますか? – user1148760

+0

@user yupは、挿入する列の数が実際に表にある列の数と一致しないことを意味します。 –

関連する問題