Upsert with PostgreSQL in PHP

Simple function for upsert with PostgreSQL in PHP
function getUpsertSQL($aRows, $sTable, $sIDField) { $sSQL = ""; foreach( (array) $aRows as $aRow) { $sUpdate = ""; $sWhere = " WHERE ".$sIDField."=".$aRow[$sIDField]; foreach( (array) $aRow as $sColumnName => $mColumnValue) { if($sColumnName == $sIDField) continue; $sColumn = $sColumnName." = ".$mColumnValue; $sUpdate.= (empty($sUpdate) ? " SET ".$sColumn : ", ".$sColumn); } unset($aRow[$sIDField]); $sSQL.= "UPDATE ".$sTable.$sUpdate.$sWhere.";"; $sSQL.= "INSERT INTO ".$sTable."(".implode(",",array_keys($aRow)).") "; $sSQL.= "SELECT ".implode(", ", array_values($aRow))." "; $sSQL.= "WHERE NOT EXISTS (SELECT 1 FROM ".$sTable." ".$sWhere.");"; } return $sSQL; }

Url: http://sklueh.de/2013/02/upsert-in-postgresql-mit-php/

Language: PHP | User: sklueh | Created: Sep 24, 2013