0

私はphp/mysqlに非常に慣れていませんが、ユーザーがcsvファイルをアップロードし、変更されたデータを置き換えたり、新しいデータを挿入したりできるページの作成に行き詰まりました。DBの内容をソート可能/検索可能な方法で表示する別のページがあるため、DB接続が機能することはわかっています。以下は、私が得るコードとエラーです。

dataimport.html

<html>
<body>

<form action="dataimport.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

dataimport.php

<?php
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';

if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  exit();
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }

$datafile = $_FILES["file"];

  try
{
  $sql = "LOAD DATA INFILE'".$datafile."' REPLACE INTO TABLE table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES
    (@col1,@col2,@col3...)";
  $s = $pdo->prepare($sql);
  $s->execute();
}
catch (PDOException $e)
{
  $error = 'Unable to connect to the database server.';
  include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
  exit();
}
?>

私が得る出力:

Upload: Report.csv
Type: application/vnd.ms-excel
Size: 1010.1943359375 kB
Stored in: E:\XAMPP\tmp\phpBD04.tmp
Notice: Array to string conversion in \dataimport.php on line 21

Unable to connect to the database server.
exception 'PDOException' with message       'SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user 'user'@'localhost' (using password: YES)' in \dataimport.php:24 Stack trace: #0 \dataimport.php(24): PDOStatement->execute() #1 {main} 

おそらく $sql 行に間違ったファイルを含めていることはわかっていますが、私の人生では、ここの壁に頭を悩ませており、役立つ例を見つけることができません。

データベースインクルードの追加

<?php
try
{
  $pdo = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $pdo->exec('SET NAMES "utf8"');
}
catch (PDOException $e)
{
  $error = 'Unable to connect to the database server.';
  include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
  exit();
}
?>
4

1 に答える 1

2
'Access denied for user 'nocreport'@'localhost' (using password: YES)'

データベース接続構成が間違っています。ユーザー名またはパスワードが一致しません。

編集。

ソースコードを追加した後、いくつかの調査を行いました。

  1. FILEuser に権限が付与されているかどうかを確認してください'nocreport'@'localhost'
  2. LOCAL次のようにキーワードを追加することもできます。

    LOAD DATA LOCAL INFILE '".$datafile."' REPLACE INTO TABLE table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col1,@col2,@col3...)

于 2013-06-18T17:50:01.300 に答える