0


0

PHPを使用してcsvをMySQLにアップロードし、同様に更新する

わかりましたので、私はこの構造を持つ要求と呼ばれるデータベーステーブルを持っています

mysql> desc requests;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| artist     | varchar(255) | YES  |     | NULL    |                |
| song       | varchar(255) | YES  |     | NULL    |                |
| showdate   | date         | YES  |     | NULL    |                |
| amount     | float        | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

ここにいくつかのサンプルデータがあります

+----+-----------+-------------------------+------------+--------+
| id | artist    | song                    | showdate   | amount |
+----+-----------+-------------------------+------------+--------+
|  6 | Metallica | Hello Cruel World       | 2010-09-15 | 10.00  |
|  7 | someone   | Some some               | 2010-09-18 | 15.00  |
|  8 | another   | Some other song         | 2010-11-10 | 45.09  |
+----+-----------+-------------------------+------------+--------+

ユーザーに同じ構造のcsvをアップロードし、csvの内容に基づいて更新または挿入する方法を提供できる方法が必要です。 私は多くのスクリプトをオンラインで見つけましたが、ほとんどは私が必要とするものではないハードコードされたcsvを持っています。 私はユーザーがcsvをアップロードできるようにする必要があります…​ phpで簡単です…​

ここにcsvの例があります

id  artist          song           showdate    amount
11  NewBee          great stuff    2010-09-15  12.99
10  anotherNewbee   even better    2010-09-16  34.00
6    NewArtist       New song       2010-09-25  78.99

あなたが見ることができるように、私はすでにデータベースにあり、更新する必要があるID 6を持っています。他の2つが挿入されます

私は誰かにスクリプト全体を書くように頼んではいませんが、アップロードについて何らかの指示を得ることができれば、そこからどこに行くことができますか…​.ありがとう

2 Answer


2


以下のストアプロシージャを作成し、テストします。 作品です

CREATE proc csv

(
@id int,
@artist varchar(50),
@songs varchar(100),
@showdate datetime,
@amount float
)
as
set nocount on

if exists (select id from dummy1 where [email protected]) -- Note that dummy1 as my table.

begin
update dummy1 set artist= @artist where [email protected]
update dummy1 set [email protected] where [email protected]
update dummy1 set [email protected] where [email protected]
update dummy1 set [email protected] where [email protected]
end
else
insert into dummy1  (artist,songs,showdate,amount)values(@artist,@songs,@showdate,@amount)
Go


1


  1. を使用してディレクトリにファイルをアップロードします move_uploaded_file

  2. fgetcsvを使用して、 csvをアップロードし、必要に応じて各行を処理します。

  3. csvファイルを削除します