UPSERT in PostgreSQL mit PHP

Diese kleine Methode erzeugt SQL-Queries (postgres) zum Erstellen oder Bearbeiten von Datensätzen. Als Parameter werden die Datensätze, die betreffende Tabelle und die Spalte mit dem Primärschlüssel übergeben.

Code:

  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;
  }

UPSERT in PostgreSQL mit PHP weiterlesen

Lightweight-PHP-Validator: Neue Version

Neue Features:
– Unterstützung von Fehlermeldungen
– Mehrsprachigkeit (deutsch / englisch) über Annotations
– Manuelles Festlegen einer Validierungsklasse

Definition der Fehlermeldungen über Annotations:
In der Validierungsklasse „ValidatorRules“ können die Fehlermeldungen in beliebig vielen Sprachen mit Hilfe von Annotations hinterlegt werden.

/**
 * @ErrorMessage[lang=de] Bitte geben Sie eine Zahl an, die kleiner ist als %.2f.
 * @ErrorMessage[lang=en] Please enter a number less than %.2f.
 */

public function check_less_than($mValue, $aParams)
{
    return (number_format($mValue, 15) < $aParams[0]);
}

Sprache festlegen:
Die Sprache in der die Fehlermeldungen zurückgegeben werden sollen, lässt sich im Validator ganz einfach über die Funktion „setLanguage“ festlegen.

$oValidator = new Validator();
$oValidator->setLanguage('de'); //Deutsch

Validieren und Fehlermeldung auslesen:
Die jeweilige Fehlermeldung kann direkt nach der Validierung über die Funktion „getLastErrorMessage“ ermittelt werden.

$oValidator->setLanguage('de');
$oValidator->isValid("15", 'less_than[10.90]'); //false
echo $oValidator->getLastErrorMessage();
//Bitte geben Sie eine Zahl an, die kleiner ist als 10.90.

//Nochmal auf Englisch
$oValidator->setLanguage('en');
$oValidator->isValid("15", 'less_than[10.90]'); //false
echo $oValidator->getLastErrorMessage();
//Please enter a number less than 10.90.

Lightweight-PHP-Validator: Neue Version weiterlesen