2016-06-01 26 views
1

我想要使用PHP在SQL Express服务器中插入批量数据。使用PHP将数据插入到SQL的问题

我有一个包含数据的csv文件。

我使用下面的代码来插入数据,但它只是增加了50行。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
 
<title>Upload page</title> 
 
<style type="text/css"> 
 
body { 
 
\t background: #E3F4FC; 
 
\t font: normal 14px/30px Helvetica, Arial, sans-serif; 
 
\t color: #2b2b2b; 
 
} 
 
a { 
 
\t color:#898989; 
 
\t font-size:14px; 
 
\t font-weight:bold; 
 
\t text-decoration:none; 
 
} 
 
a:hover { 
 
\t color:#CC0033; 
 
} 
 

 
h1 { 
 
\t font: bold 14px Helvetica, Arial, sans-serif; 
 
\t color: #CC0033; 
 
} 
 
h2 { 
 
\t font: bold 14px Helvetica, Arial, sans-serif; 
 
\t color: #898989; 
 
} 
 
#container { 
 
\t background: #CCC; 
 
\t margin: 100px auto; 
 
\t width: 945px; 
 
} 
 
#form \t \t \t {padding: 20px 150px;} 
 
#form input  {margin-bottom: 20px;} 
 
</style> 
 
</head> 
 
<body> 
 
<div id="container"> 
 
<div id="form"> 
 

 
<?php 
 
ini_set('memory_limit', '512M'); 
 
ini_set('max_execution_time', '180'); 
 

 

 

 
//Upload File 
 
if (isset($_POST['submit'])) { 
 
\t 
 
\t if (is_uploaded_file($_FILES['filename']['tmp_name'])) { 
 
\t \t echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; 
 
\t \t echo "<h2>Displaying contents:</h2>"; 
 
\t \t 
 
\t \t //readfile($_FILES['filename']['tmp_name']); 
 
\t } 
 

 
\t //Import uploaded file to Database 
 
\t $row = 1; 
 
\t if (($handle = fopen($_FILES['filename']['tmp_name'], "r")) !== FALSE) { 
 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
 
     $num = count($data); 
 
     
 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
 
     $row++; 
 
     $server = "10.10.10.10\SQLEXPRESS,1433"; 
 
\t \t $options = array( "UID" => "user", "PWD" => "1234", "Database" => "Analytics"); 
 
\t \t $conn = sqlsrv_connect($server, $options); 
 
\t \t if ($conn == false) die("<pre>".print_r(sqlsrv_errors(), true));echo "Successfully connected!"; 
 
\t \t \t $import="INSERT into [Table](column1,column2,column3) values('$data[0]','$data[1]','$data[2]')"; 
 
\t \t \t echo $import; 
 
\t \t \t \t sqlsrv_query($conn,$import) or die(sqlsrv_error()); 
 
\t \t \t unset($data); 
 
    \t } 
 
    \t fclose($handle); 
 
\t } 
 
\t echo "<br /></p>\n"; 
 
\t echo $row; 
 

 

 
\t 
 

 
\t print "Import done"; 
 

 
\t //view upload form 
 
}else { 
 

 
\t print "Upload new csv by browsing to file and clicking on Upload<br />\n"; 
 

 
\t print "<form enctype='multipart/form-data' action='Main.php' method='post'>"; 
 

 
\t print "File name to import:<br />\n"; 
 

 
\t print "<input size='50' type='file' name='filename'><br />\n"; 
 

 
\t print "<input type='submit' name='submit' value='Upload'></form>"; 
 

 
} 
 

 
?> 
 

 
</div> 
 
</div> 
 
</body> 
 
</html>

如果我通过评论INSERT INTO命令,它会显示所有字段打印结果在PHP。

+0

是否有你的'Table'任何主键? 'data [0],data [1],data [2]'中是否有单引号? – gofr1

回答

0

您是否试过增加最大执行时间?这可能会导致问题。

this页面可能会帮助