2012-01-15 91 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

相关问题