Một cách để làm điều đó:
(Giả sử bạn đã biết cách mở tệp và thực hiện truy vấn.)
Đầu tiên hãy đọc các hàng từ CSV của bạn và giả sử dữ liệu bị thiếu trong SQL.
while (($row = fgetcsv($file)) !== FALSE) {
$num = $row[0]; // or whatever CSV column the value you want is in
$result[$num] = ['csv' => $num, 'sql' => '', 'status' => 'MISSING IN SQL'];
}
Sau đó, tìm nạp các hàng từ truy vấn của bạn và điền vào mảng bạn đã tạo từ CSV cho phù hợp.
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$num = $row['EAN']; // or whatever your column is named
if (isset($result[$num])) {
// This has a value from the CSV, so update the array
$result[$num]['sql'] = $num;
$result[$num]['status'] = 'OK';
} else {
// This doesn't have a value from the CSV, so insert a new row
$result[$num] = ['csv' => '', 'sql' => $num, 'status' => 'MISSING IN CSV'];
}
}
Bạn có thể thay đổi thứ tự của điều này và xử lý kết quả truy vấn trước. Một trong hai thứ tự sẽ hoạt động, miễn là bạn thực hiện cập nhật / chèn logic với nguồn dữ liệu thứ hai.
Bạn có thể ksort($result);
nếu bạn muốn các giá trị đã hợp nhất theo thứ tự, thì xuất $result
tuy nhiên bạn cần.