MySQL-Datenbank mit PHP sichern

Mit dem folgenden Code können MySQL-Datenbanken auf einfache Weise gesichert werden. Es müssen lediglich die Verbindungs-Parameter an die Methode „backupMySQLDB“ übergeben werden. Optional kann noch ein Dateinamen für die Backup-Datei angegeben werden.

Code:

function backupMySQLDB($sDBUser, $sDBPassword, $sDBName, $sDBHost = "localhost", $sDBBackupFile = "")
{
    set_time_limit(0);
    $sOutput = "";
    $oConnection = new mysqli($sDBHost, $sDBUser, $sDBPassword, $sDBName);
    $mTables = $oConnection->query("SHOW TABLES");
   
    while ($aTable = $mTables->fetch_assoc())
    {
        $sOutput.="DROP TABLE IF EXISTS `".$aTable['Tables_in_'.$sDBName]."`;\n";
        $aResult = $oConnection->query("SHOW CREATE TABLE `".$aTable['Tables_in_'.$sDBName]."`")->fetch_assoc();
        $sOutput.=$aResult['Create Table'].";\n";
        $rResult =$oConnection->query("SELECT * FROM `".$aTable['Tables_in_'.$sDBName]."`");
       
        while($aRow = $rResult->fetch_assoc())
        $sOutput.= "INSERT INTO `".$aTable['Tables_in_'.$sDBName]."` VALUES('".implode("', '", array_values($aRow))."');\n";
    }
   
    fwrite($rOutput = fopen(($sDBBackupFile == "" ? "Backup-".$sDBName."-".date('Y-m-d_H-i').".sql" : $sDBBackupFile), "w"), $sOutput);
    fclose($rOutput);
}

MySQL-Datenbank mit PHP sichern weiterlesen

PHP: MySQL Query Funktion

Über die Methode „query“ lassen sich beliebige SQL-Queries ausführen. Der Parameter „sSQL“ enthält das Query. Der Rückgabewert enthält entweder das Result Set als Array oder true / false im Erfolgs- bzw. Fehler-Fall. Bevor die Methode verwendet werden kann, müssen noch der Benutzername, das Passwort und ggf. der Hostname für die Datenbankverbindung festgelegt werden.

Update 01.03.2015:
– „mysql_“-Funktionen wurden entfern, da deprecated
– Verbindung wird nur noch einmal aufgebaut

Code:

function query($sSQL)
{
    static $oConnection;
   
    //Change user / password / database!
    if(empty($oConnection))
    $oConnection = new mysqli("localhost", "root", "password", "database");
     
    $mResult = $oConnection->query($sSQL);
   
    if($mResult instanceof mysqli_result)
    {
        $aResult = array();
                   
        while ($aRow = $mResult->fetch_assoc())
        $aResult[] = $aRow;        
       
        $mResult->close();
        $mResult = $aResult;
    }
   
    return $mResult;
}

PHP: MySQL Query Funktion weiterlesen

Alter über Geburtsdatum mit PostgreSQL ermitteln

Wie man dynamisch das Alter anhand eines Geburtsdatums mit PostgreSQL bestimmt? Ganz einfach:

SELECT 
    id,
    firstname,
    lastname,
    date_of_birth,
    EXTRACT(YEAR FROM age(users.date_of_birth::DATE)) AS age
FROM users;

/*
id |firstname |lastname     |date_of_birth |age
-----------------------------------------------------
24 |"Max"     |"Mustermann" |"1987-08-12"  |25
51 |"John"    |"Doe"        |"1985-02-03"  |28
*/

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

RedBeanPHP – Die einfach zu verwendende ORM-Bibliothek

RedBeanPHP ist eine einfach zu verwendende ORM-Bibliothek, die die Vorteile eines dokumentenorientierten Datenbanksystems wie z.B. mongoDB und eines relationalen Datenbanksystems vereint. RedBeanPHP kann direkt eingesetzt werden und erfordert keine aufwändige Konfiguration.

Anwendungsbeispiel:

//RedBeanPHP einbinden
require_once('rb.php');

//Datenbankverbindung einrichten
R::setup('mysql:host=localhost;dbname=test','root','password');

/*
Einen neuen Datensatz erzeugen
- Die Tabelle wird automatisch angelegt!
*/

$oEntry = R::dispense('mytable');
$oEntry->title = 'Hello World';

//Datensatz speichern
$iID = R::store($oEntry);

//Laden der gespeicherten Daten
$oEntry = R::load('mytable', $iID);

//Anzeigen des Titels
echo $oEntry->title;

Link: http://redbeanphp.com/
GitHub: https://github.com/gabordemooij/redbean