आपके मामले में, सबसे अच्छा समाधान सबसे सरल है, इसलिए केवल पांच प्रश्न बनाकर, आप इसे लूप में भी कर सकते हैं:
$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);
}
या अद्यतन के लिए 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();
}
table1
. के लिए SQL .. 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
नोट: जब आप बेहतर तरीके से वर्णन करेंगे कि आप विशिष्टता को कैसे बनाए रखना चाहते हैं तो मैं शायद कुछ अन्य समाधान जोड़ूंगा। फिलहाल कोड नहीं जानता कि क्या सीएसवी के प्रमुख जेम्स वही जेम्स हैं, जो डीबी में प्रमुख हैं।