日期:2014-05-17  浏览次数:20464 次

关于导入txt文件到数据库的问题
我们每天都会从amazon导出一些订单(txt文件),然后用PHP导入到数据库,

现在出现的问题就是:有些txt文件导入的时候总会有几条记录导不进去,但是单独提取出来(把导不进去的记录建一个文件)再导就能成功,每个txt文件大概1000条左右的记录,以下是PHP原代码,请各位大大帮我分析一下什么原因

还有请问可以查写入数据库失败的原因吗?可以的话怎么查

PHP code

 
 $filepath=$_GET['uploadfile'];
echo $filepath;

require_once 'conn.php';
setlocale(LC_ALL, 'en_US.UTF-8');

error_reporting(E_ALL ^ E_NOTICE); 

$line=0;
$shipments=0;


$strSqla="SELECT MAX(number) FROM `sale_orders`";  //查询sale_orders表id字段最大值
$querya = mysql_query($strSqla,$conn); 
$resultaa= mysql_fetch_row($querya);
$maxnum=$resultaa[0];

$maxnum++;

$file = fopen($filepath,"r") or die("打开文件失败"); 

while (!feof($file)) { 

$buffer = fgets($file);

if ($line<>0)
{    


$u=explode('    ', trim($buffer));
if(!empty($u[0])){
  
$or_id=$u[0];
$or_it_id=$u[1];
$payments_date=$u[3];

$buyer_email=$u[7];
$buyer_name=$u[8];
$buyer_phone=$u[9];
$sku=$u[10];
$jj_sku=substr($sku,1,7);
$product_name=$u[11];
$quantity=$u[12];
$recipient_name=$u[16];
$ship_address1=$u[17];
$ship_address2=$u[18];
$ship_address3=$u[19];
$ship_state=$u[21];
$ship_postal=$u[22];
$ship_country=$u[23];

 
 $sql_detrde=" INSERT INTO `amazon_erp`.`sale_orders` (`number` ,`order_id` ,`order_item_id`,`shipments` ,`payments-date` ,`buyer-email` ,`buyer-name` ,`buyer-phone-number` ,`sku`,`jj_sku` ,`product-name` ,`quantity-purchased`,`recipient-name`,`ship-address-1`,`ship-address-2`,`ship-address-3`,`ship-state`,`ship-postal-code`,`ship-country`  )VALUES ('$maxnum','$or_id','$or_it_id',  '$shipments', '$payments_date','$buyer_email', '$buyer_name','$buyer_phone','$sku' ,'$jj_sku', '$product_name', '$quantity', '$recipient_name', '$ship_address1', '$ship_address2','$ship_address3','$ship_state' , '$ship_postal', '$ship_country')";   
 mysql_query($sql_detrde);   
 
 $myaf = mysql_affected_rows();
 
 if($myaf>0)
 {
echo "<br/>import  $or_id   Success";
}
else
{
 echo "<br/><font color='#FF0000'>";
 echo "import   $or_id    Failure";
 echo "</font>";
 }

  
}
 } 
  $line++;
   
   }  
   

echo "<br/>导入成功";
echo "<br/>Possible file upload attack!\n";


echo '<script>window.open("labela_outputcsv.php?number='.$maxnum.'","_blank");</script>'; 
echo '<script>location.href="outputcsv.php?number='.$maxnum.'"</script>';




------解决方案--------------------
$myaf = mysql_affected_rows() or die(mysql_error());
------解决方案--------------------
唠叨别激动,他的语气应该不是质疑,而是疑惑不解


zhuhao你要把你的SQL语句做安全转义,把语句视作含有“\”来看待

要么全过程用unicode来操作