Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да кача отделни CSV редове в различни таблици в PHP?

Във вашия случай най-доброто решение е най-простото, така че просто създавайки пет заявки, можете дори да го направите в цикъла:

$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);
}

Или за UPDATE с uid заменете 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]);
}

Или още по-добре с INSERT или UPDATE, имайте предвид, че в този случай използваме именувани параметри.

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 за 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

Забележка: Когато опишете по-добре как искате да запазите уникалността, вероятно ще добавя някои други решения. В момента кодът не знае дали Джеймс, шеф от CSV, е същият Джеймс, шеф в 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 база данни с PHP

  2. Как мога да проверя дали MySQL таблица съществува с PHP?

  3. Как да търся наклонена черта (\) в MySQL? и защо избягването (\) не се изисква за къде (=), а за Like се изисква?

  4. Намерете припокривания на период от време в рамките на същата таблица за конкретен потребител MySQL

  5. Връзка между каталог, схема, потребител и екземпляр на базата данни