我正在将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
因此我的数据库连接没有任何意义。
谢谢你。答案 0 :(得分:1)
您正在使用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
。
答案 1 :(得分:0)
您的数据库凭据可能有误。 检查服务器是否可访问。
并且已经发送的标题信息是由php代码之前的空格
引起的 <?php
include_once('../include/connection.php');
带
<?php
include_once('../include/connection.php');
答案 2 :(得分:0)
您的数据库凭据不正确。您还应该考虑使用mysqli面向对象的数据库方法,并且应该使用mysqli_real_escape_string而不是addslashes。标头错误是抛出mysql错误并输出到页面的结果。
答案 3 :(得分:0)
您是否尝试使用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);
");
}