Я пытаюсь использовать запрос INSERT ON DUPLICATE KEY UPDATE
в PHP
и MySQL
.
У меня есть профиль пользователя, в котором пользователь может обновить изображение в своем профиле (где оно затем сохраняется в БД). Моя проблема заключается в том, что если внутри таблицы profileImage
там уже есть запись (и пользователь может быть идентифицирован с помощью studentID
, то только UPDATE
на изображении нужно просто изменить файл filePath (который содержит имя изображения) и не вставляйте еще одну строку в таблицу базы данных.
Однако у меня возникают проблемы с запросом, по-прежнему позволяющим пользователям загружать более 1 изображения.
php script:
$stmt = $conn->prepare ("INSERT INTO `profileImage` (`imageID`, `imagePath`, `studentID`) VALUES (NULL, ?, ?) ON DUPLICATE KEY UPDATE `imageID` = VALUES (`imageID`), `imagePath` = VALUES (`imagePath`), `studentID` = VALUES (`studentID`) ");
$stmt->bind_param("si", $fileName, $studentID);
$stmt->execute() or die("Failed to insert image into the database");
Таблица профиля изображения в базе данных:
imageID
- первичный ключ, а studentID
- внешний ключ, могу ли я в любом случае установить studentID
в своем выражении в качестве триггера, поэтому, если studentID
уже существует в этой таблице, THEN запустите обновление, а не вставку?