🢂InsertOrUpdate w PHP ‑ funkcja której nie ma a wszyscy potrzebują
Funkcja insertOrUpdate, realizuje operację wstawiania lub aktualizowania rekordu w bazie.
Funkcja insertOrUpdate
- Funkcja insertOrUpdate przyjmuje trzy argumenty: nazwę tabeli, tablicę danych do wstawienia lub aktualizacji oraz listę kolumn do aktualizacji.
- Połączenie z bazą danych jest nawiązywane za pomocą funkcji polacz_z_baza (szukaj na blogu).
- Funkcja zwraca liczbę wierszy, które zostały zmodyfikowane przez zapytanie.
Pamiętaj, że do korzystania z tej funkcji potrzebne będzie prawidłowe połączenie z bazą danych oraz tabela, która ma odpowiednio skonfigurowany klucz główny lub unikalny indeks, aby instrukcja ON DUPLICATE KEY UPDATE
działała poprawnie.
<?php
function insertOrUpdate($tableName, $data, $updateColumns)
{
// Nawiązanie połączenia z bazą danych (szukaj na blogu)
$pdo = polacz_z_baza();
// Budowanie części INSERT zapytania
$columns = implode(", ", array_keys($data));
$values = ":" . implode(", :", array_keys($data));
// Budowanie części ON DUPLICATE KEY UPDATE
$updateQuery = "";
foreach ($updateColumns as $column) {
$updateQuery .= "$column = VALUES($column), ";
}
$updateQuery = rtrim($updateQuery, ", ");
// Pełne zapytanie SQL
$sql = "INSERT INTO $tableName ($columns) VALUES ($values)
ON DUPLICATE KEY UPDATE $updateQuery";
// Wykonanie zapytania
try {
$stmt = $pdo->prepare($sql);
foreach ($data as $key => $value) {
$stmt->bindValue(':' . $key, $value);
}
$stmt->execute();
return $stmt->rowCount();
} catch (PDOException $e) {
// Obsługa błędów
die("Błąd bazy danych: " . $e->getMessage());
}
}
Jak używać insertOrUpdate?
Poniżej przykład.
<?php,mysql
$data = ['id' => 1, 'name' => 'Nowa Nazwa', 'age' => 30];
$updateColumns = ['name', 'age'];
insertOrUpdate('users', $data, $updateColumns);