У меня есть небольшая база данных с некоторыми books и stocks, которая выглядит примерно так:
| id | book | stock |
| 1 | Harry Potter... | 83 |
| 2 | Lord of the rings... | 45 |
| 3 | In Search of Lost Time | 8 |
И я использую этот код для одновременной вставки нескольких записей - я беру записи из файла CSV с помощью php - (я нашел его здесь, на stackoverflow):
$pdo->beginTransaction();
$fields = ['book', 'stock'];
$values = [];
foreach($products as $product){
$bind[] = '(?,?)';
$values = array_merge($values, array_values($product));
}
$sql = "INSERT INTO books (" . implode(",", $fields) . ") VALUES " . implode(',', $bind);
$statement = $pdo->prepare ($sql);
try {
$statement->execute($values);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
Теперь проблема, с которой я столкнулся, заключается в том, что все эти записи должны быть уникальными, но когда я запускаю этот код, чтобы проверить, есть ли какие-либо обновления с точки зрения книжного или книжного запаса внутри файла CSV, это просто рекламирует одну и ту же книгу снова и снова (с другим id).
Есть ли способ как-то избежать этого дублирования, но в то же время вставить записи multiple, используя значения PDO и binding?
Спасибо, что нашли время прочитать это! : D
Привет, фанк, я знаю, как использовать это только для одной записи :( и я не могу найти способ использовать on duplicate для нескольких записей, не могли бы вы мне помочь? X_X





