我需要插入表或更新值。
我需要知道数据是更新的还是新创建的。
目前我的逻辑是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发布于 2014-10-28 21:35:04
如果使用ON DUPLICATE KEY UPDATE,可以剪切一个步骤(选择)。因此,这将只是一个查询。
以下是文件:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
至于检查,下面是代码:
if($stmt->rowCount() > 0 ){
if($stmt->lastInsertId() != 0){
echo 'Row was inserted';
}else{
echo 'Row was updated';
}
}else{
echo 'row was neither updated or inserted';
}发布于 2014-10-28 21:36:06
如果表有主键或唯一索引,则需要“替换为”。
https://stackoverflow.com/questions/26618837
复制相似问题