Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa mengunggah baris CSV individual ke tabel yang berbeda di PHP?

Dalam kasus Anda, solusi terbaik adalah yang paling sederhana, jadi hanya dengan membuat lima kueri, Anda bahkan dapat melakukannya berulang kali:

$pdo = new PDO("mysql:host=127.0.0.1;dbname=yourdbname;charset=utf8", "username", "password");

if (($handle = fopen("test.csv", "r")) !== FALSE) {
    $row = 1;
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if ($row == 1) {
            $row++;
            continue;
        }
        $row++;

        foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
            $stmt = $pdo->prepare("INSERT INTO $table (name, title) VALUES (?,?)");
            $stmt->execute([$data[0], $data[1]]);
        }
    }
    fclose($handle);
}

Atau untuk UPDATE dengan uid ganti forech:

foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
    $stmt = $pdo->prepare("UPDATE $table SET name=?, title=? WHERE uid=?");
    $stmt->execute([$data[0], $data[1], $uid]);
}

Atau bahkan lebih baik dengan INSERT atau UPDATE, perhatikan bahwa dalam kasus ini kami menggunakan params bernama.

foreach (['table1', 'table2', 'table3', 'table4', 'table5'] as $table) {
    $stmt = $pdo->prepare("INSERT INTO $table (uid, name, title) 
        VALUES (:uid, :name, :title) 
        ON DUPLICATE KEY UPDATE name=:name, title=:title");
    $stmt->bindValue('uid', $uid);
    $stmt->bindValue('name', $data[0]);
    $stmt->bindValue('title', $data[1]);
    $stmt->execute();
}

SQL untuk table1 .. table5

CREATE TABLE table1 (
 uid int(11) NOT NULL AUTO_INCREMENT,
 name varchar(255) NOT NULL,
 title varchar(255) NOT NULL,
 PRIMARY KEY (uid)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

Catatan: Ketika Anda akan menjelaskan dengan lebih baik bagaimana Anda ingin mempertahankan keunikan, saya mungkin akan menambahkan beberapa solusi lain. Saat ini kode tidak tahu apakah James, kepala dari CSV adalah James yang sama, kepala di DB.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL vs MongoDB

  2. Kesalahan XML di ampersand (&)

  3. Mengapa Hibernate tidak membuat database untuk MySQL?

  4. MySql.Data.MySqlClient.MySqlException:Batas waktu kedaluwarsa

  5. Koneksi SSL PHP ke MySQL