Можете помочь разобраться с PDO, LastInsertId и INSERT ON DUPLICATE KEY UPDATE?

Здравствуйте,

Делаю запрос:
$param = 1;
$sql = "INSERT INTO orders(param,unic_cell) VALUES (?,1) ON DUPLICATE KEY UPDATE param=?";
$query = $pdo->prepare($sql);
$query->execute(array($param,$param));
	echo $pdo->lastInsertId();


Вообщем суть вопроса:
1) Когда вставляется строка выводится номер вставленной строки, тут все ок
Когда обновляется строка:
2)$param = 1 снова, то выводится 0, тут тоже ок
3)$param != 1, то выводится номер строки, почему так происходит?

Т.е. если обновляемая строка не равна новой, то происходит как-будто удаление и вставка новой, почему так происходит?
  • Вопрос задан
  • 648 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если `param` - не уникальное поле, то ON DUPLICATE KEY никогда не сработает и каждый раз будет вставляться новая строка, а если уникальное, то UPDATE param=? перепишет строку, выдав ей новый id.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы