[英]uploading csv file into mysql through php
我知道如何將csv文件上傳到mysql數據庫,但只能通過cmd。 我想知道如何使用PHP表格將csv文件上傳到mysql數據庫,並忽略excel上的一些信息,只會從某一行開始導入。 ? 請幫助我。
(PHP 4,PHP 5)
fgetcsv
請參閱php手冊http://php.net/manual/en/function.fgetcsv.php
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
試試這個它運行良好,您可以根據CSV文件中的列數添加盡可能多的值。 然后在HTML代碼中將上傳語法放在標記中。
**
$fname = $_FILES['csv_file']['name'];
$chk_ext = explode(".",$fname);
$filename = $_FILES['csv_file']['tmp_ name'];
$handle = fopen($filename, "r");
if(!$handle){
die ('Cannot open file for reading');
}
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE)
{
$query = "INSERT INTO tablename (col1_csv, col2_csv)
values ('$data[0]', '$data[1]');
mysql_query($query) or die(mysql_error ());
}
fclose($handle);
?>
**
您可以使用MySQL LOAD DATA INFILE
語句一次批量插入數千條記錄。 PHP可以處理文件上傳。 PHP代碼類似於:
$query = sprintf("
LOAD DATA LOCAL INFILE '%s'
INTO TABLE `table1`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
",
mysql_real_escape_string($FILES["file1"]["tmp_name"])
);
LOCAL
關鍵字應該允許您解決一些安全限制。 更改FIELDS TERMINATED BY
和LINES TERMINATED BY
參數以匹配excel在導出時使用的分隔符。 IGNORE 1 LINES
告訴MySQL跳過標題行。
注意:Excel似乎不使用轉義字符; 但它會(i)包含包含的字段,
並且"
with "
(ii)使用""
來逃避單個"
內部數據。我相信MySQL會理解這種編碼並正確導入數據。
嘗試這個:
$filename=$_FILES["upload_file"]["name"];
$extension = end(explode(".",$filename));
if ($extension=='csv') {
$tmp_file=$_FILES["upload_file"]["tmp_name"];
$handle = @fopen($tmp_file, "r");
//specify your own database connection parameter
$db = new PDO('mysql:host=localhost;dbname=demo','user','password');
$stmt = $db->prepare("INSERT INTO writers (writer_name, writer_email) VALUES (?, ?)");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$array=explode(",",$buffer);
$count=1;
foreach ($array as $value) {
$stmt->bindParam($count, $value);
$count++;
}
$stmt->execute();
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
$db = null;
echo "<p>Success</p>";
}
else {
$error="<p style='color:red;'>Invalid file type</p>";
}
請參閱http://pradipchitrakar.com.np/programming/upload-csv-mysql-php/
您可以使用“LOAD DATA INFILE”語句和“IGNORE ... LINES”選項,您可以從命令行以及PHP中使用該選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.