[英]importing CSV to MYSQL via PHP
我正在將CSV文件導入我的管理區域,我想將文件添加到我的數據庫中。 我對import.php
PHP代碼是:
<?php
include_once('../include/connection.php');
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO mobi(promo_title, promo_content, promo_image, promo_link, promo_cat, promo_name) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
//redirect
header('Location: import.php?success=1'); die;
}
?>
<!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>Import a CSV File with PHP & MySQL</title>
</head>
<body>
<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
Choose your file: <br />
<input name="csv" type="file" id="csv" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>
代碼顯示正確,但是當我選擇我的測試文件並點擊提交時,我遇到了以下問題:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in admin/import.php on line 23
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in admin/import.php on line 23
Warning: Cannot modify header information - headers already sent by (output started at admin/import.php:1) in admin/import.php on line 29
有人能看出原因嗎?
我的connection.php代碼是這樣的:
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=*********', '*********', '*********');
}catch (PDOException $e){
exit('Database Error.');
}
?>
請注意我的其他頁面,如add.php,delete.php,edit.php等都使用相同的include_once for connection.php
因為我的數據庫連接沒有任何關系。
謝謝。
您正在使用PDO
建立數據庫連接。 但是$pdo
實例不再使用了!
要執行SQL語句,需要像$pdo->query("INSERT INTO mobi ...")
相反,您正在使用mysql_query
發送MySQL查詢。 所以你得到這些警告:
Access denied for user 'root'@'localhost' (using password: NO)
A link to the server could not be established
還要確保在header()
函數之前沒有輸出任何字符串等...以刪除此警告: headers already sent
。
您的數據庫憑據可能有誤。 檢查服務器是否可訪問。
已發送的標題信息是由PHP代碼前的空格引起的
<?php
include_once('../include/connection.php');
同
<?php
include_once('../include/connection.php');
您的數據庫憑據不正確。 您還應該考慮使用mysqli面向對象的數據庫方法,並且應該使用mysqli_real_escape_string而不是addslashes。 標頭錯誤是由於拋出mysql錯誤並輸出到頁面而導致的。
您是否嘗試使用php加載文件,這樣您就不必循環使用它了?
我建議使用require_once
而不是include_once
。 __DIR__
在包含路徑前面也總是一件好事。 這樣你可以說出文件來自當前文件的位置,而不是當前運行的腳本。
它看起來像這樣:
<?php
require_once __DIR__ . '/../include/connection.php';
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
mysql_query("
LOAD DATA LOW_PRIORITY LOCAL
INFILE '$file'
REPLACE INTO TABLE mobi
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\"'
LINES TERMINATED BY '\n'
(promo_title, promo_content, promo_image, promo_link, promo_cat, promo_name)
SET promo_name = TRIM(BOTH '\r' FROM promo_name);
");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.