我需要插入到表中或更新值。PDO插入,得到“更新”或“插入”作为回报
我需要知道数据是更新还是新创建。
目前我的逻辑是SELECT
,如果不存在INSERT
,如果存在UPDATE
。
我需要对更新的行和插入的行进行计数。
这很慢,我需要一个更快的方法:我可以使用INSERT
或REPLACE
而不尝试先选择,并让PDO客户端返回该行是否已更新或插入?
我使用PHP/PDO/MySQL的
更新与伪代码:
当前逻辑:
<?php
$rowExists = PDO SELECT by key
if ($rowExists)
PDO UPDATE by key
$updates++
else
PDO INSERT
$inserts++
通缉逻辑:
<?php
PDO INSERT .. ON DUPLICATE KEY
$updates++ or $inserts++ according to what it actually did
有'insert ... on duplicate key update' – 2014-10-28 21:34:51
@MarcB我知道,但它告诉我它是否已更新或插入?请使用伪代码查看我更新的问题。 – DanFromGermany 2014-10-28 21:39:49
如果它被插入,则last_insert_id()将具有该新行的新ID。但是这仅适用于单插入。如果您使用扩展插入语法,或者“insert ... select from”,那么所有投注都将关闭。 – 2014-10-28 21:40:50