Php 使用“替换为”时跳过字段

Php 使用“替换为”时跳过字段,php,mysql,Php,Mysql,REPLACE INTO将检测主键是否存在,然后对其进行更新,如果不添加新记录,自行检查确实很方便,但某些字段不应再次更新,例如create_at,created_at应保留第一次创建数据的时间,是否可以跳过文件?使用。它使您能够更好地控制更新部件。(同时替换将删除您的行并创建一个新行,该行可能会在使用约束时出现问题) $sql = REPLACE INTO `table` (`id`, `name`, `created_at`) VALUES (:id, :name, :created_at)

REPLACE INTO
将检测主键是否存在,然后对其进行更新,如果不添加新记录,自行检查确实很方便,但某些字段不应再次更新,例如
create_at
created_at
应保留第一次创建数据的时间,是否可以跳过文件?

使用。它使您能够更好地控制更新部件。(同时替换将删除您的行并创建一个新行,该行可能会在使用约束时出现问题)

$sql = REPLACE INTO `table` (`id`, `name`, `created_at`) VALUES (:id, :name, :created_at);
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $_POST['id']);
$stmt->bindValue(':name', $_POST['name']);
$stmt->bindValue(':created_at', date('Y-m-d H:i:s'));
$stmt->execute();
$sql = 'INSERT INTO `table` (`id`, `name`, `created_at`) VALUES (:id, :name, :created_at) ON DUPLICATE KEY UPDATE `name` = :name';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $_POST['id']);
$stmt->bindValue(':name', $_POST['name']);
$stmt->bindValue(':created_at', date('Y-m-d H:i:s'));
$stmt->execute();