PDO(如果id不存在)在重复更新时插入行

时间:2018-08-09 15:00:03

标签: php mysql pdo

我有一个小型数据库,其中有一些booksstocks基本上是这样的:

| id |       book             |     stock    |
|  1 | Harry Potter...        |      83      |
|  2 | Lord of the rings...   |      45      |
|  3 | In Search of Lost Time |       8      |

我正在使用此代码一次插入多个记录-我正在使用php从CSV文件中获取记录-(我在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(); 

现在我遇到的问题是所有这些记录都应该是唯一的,但是当我运行此代码时,请检查{{ 1}}文件,它只是一遍又一遍地广告同一本书(使用不同的CSV)。

是否有某种方法可以避免重复,但同时使用idmultiple值插入PDO记录?

感谢您抽出宝贵时间阅读本文! :D

0 个答案:

没有答案