当前位置:Gxlcms > PHP教程 > 关于导入txt文件到数据库的有关问题

关于导入txt文件到数据库的有关问题

时间:2021-07-01 10:21:17 帮助过:36人阅读

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

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

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

PHP code
  1. <!--
  2. Code highlighting produced by Actipro CodeHighlighter (freeware)
  3. http://www.CodeHighlighter.com/
  4. -->
  5. $filepath=$_GET['uploadfile'];
  6. echo $filepath;
  7. require_once 'conn.php';
  8. setlocale(LC_ALL, 'en_US.UTF-8');
  9. error_reporting(E_ALL ^ E_NOTICE);
  10. $line=0;
  11. $shipments=0;
  12. $strSqla="SELECT MAX(number) FROM `sale_orders`"; //查询sale_orders表id字段最大值
  13. $querya = mysql_query($strSqla,$conn);
  14. $resultaa= mysql_fetch_row($querya);
  15. $maxnum=$resultaa[0];
  16. $maxnum++;
  17. $file = fopen($filepath,"r") or die("打开文件失败");
  18. while (!feof($file)) {
  19. $buffer = fgets($file);
  20. if ($line<>0)
  21. {
  22. $u=explode(' ', trim($buffer));
  23. if(!empty($u[0])){
  24. $or_id=$u[0];
  25. $or_it_id=$u[1];
  26. $payments_date=$u[3];
  27. $buyer_email=$u[7];
  28. $buyer_name=$u[8];
  29. $buyer_phone=$u[9];
  30. $sku=$u[10];
  31. $jj_sku=substr($sku,1,7);
  32. $product_name=$u[11];
  33. $quantity=$u[12];
  34. $recipient_name=$u[16];
  35. $ship_address1=$u[17];
  36. $ship_address2=$u[18];
  37. $ship_address3=$u[19];
  38. $ship_state=$u[21];
  39. $ship_postal=$u[22];
  40. $ship_country=$u[23];
  41. $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')";
  42. mysql_query($sql_detrde);
  43. $myaf = mysql_affected_rows();
  44. if($myaf>0)
  45. {
  46. echo "<br>import $or_id Success";
  47. }
  48. else
  49. {
  50. echo "<br><font color="#FF0000">";
  51. echo "import $or_id Failure";
  52. echo "</font>";
  53. }
  54. }
  55. }
  56. $line++;
  57. }
  58. echo "<br>导入成功";
  59. echo "<br>Possible file upload attack!\n";
  60. echo '';
  61. echo '';


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


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

要么全过程用unicode来操作

人气教程排行