Всем примет! Помогите разобраться с кодом. Есть код, который данные формате csv записывает в MYSQL. Но есть проблема, он не перезаписывает базу, а создает новые строки. Подскажите, пожалуйста, что нужно сделать чтобы он перезаписывал по ID Код (Text): <?php // (A) CONNECT TO DATABASE - CHANGE SETTINGS TO YOUR OWN! $dbHost = "localhost"; $dbName = "test"; $dbChar = "utf8mb4"; $dbUser = "root"; $dbPass = ""; $pdo = new PDO( "mysql:host=".$dbHost.";dbname=".$dbName.";charset=".$dbChar, $dbUser, $dbPass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); // (B) READ UPLOADED CSV $fh = fopen($_FILES["upcsv"]["tmp_name"], "r"); if ($fh === false) { exit("Failed to open uploaded CSV file"); } // (C) IMPORT ROW BY ROW while (($row = fgetcsv($fh)) !== false) { //print_r($row); $stmt = $pdo->prepare("INSERT INTO `users` (`id`, `number`, `square`) VALUES (?,?,?)"); $stmt->execute([$row[0], $row[1]]); } fclose($fh); echo "DONE.";
Так ? Код (Text): $stmt = $pdo->prepare("UPDATE `users` SET `number`='$number', `square`='$square' WHERE `id`='$id'";)
Нужно писать логику и обработчик. Например могут быть три случая: 1) Только обновить существующие значения. update 2) Только обновить существующие значения и добавить, если их нет - update + insert 3) Очистить всю таблицу и загрузить данные из файла TRUNCATE `table` + INSERT INTO Обработать csv можно с помощью модуля PHPExcel (например) Просто для примера, Код (Text): INSERT INTO users (id, name) VALUES (:id, :name) ON DUPLICATE KEY UPDATE name = VALUES(name)
Добрый день! Задача такая - необходимо дополнять строки, с id которых нет и делать update ранее сохранённых строк. Так? Для начала Вам нужно очистить таблицу. Затем так изменить структуру: Код (Text): `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ... UNIQUE (id) и добавить в запрос ON DUPLICATE KEY UPDATE PHP: $stmt = $pdo->prepare("INSERT INTO `users` (`id`, `number`, `square`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE number = ?, square = ?;"); Удачи!
Задача обновлять Базу данных через файл. (делать update ранее сохранённых строк.) Спасибо за развернутый ответ.
Советую Вам убрать дубликаты строк из таблицы и изменить структуру поля "id". и наверное, надо иметь ввиду, что в импортированных данных, чисто случайно, могут оказаться раннее не сохранённые строки. Поэтому надёжнее применить INSERT INTO users ... ON DUPLICATE KEY UPDATE