Add db backend interface

Change-Id: I7e846f3ab56770eacb35b585d98e7055a0236ff7
diff --git a/db_backend.php b/db_backend.php
new file mode 100644
index 0000000..5a92dc0
--- /dev/null
+++ b/db_backend.php
@@ -0,0 +1,78 @@
+<?php
+
+include_once "User.php";
+include_once "config.php";
+
+use \User as User;
+
+function open_db() {
+    global $DB, $DB_USER, $DB_PASS;
+    try {
+        # MS SQL Server and Sybase with PDO_DBLIB 
+        $DBH = new PDO($DB, $DB_USER, $DB_PASS);
+    }
+    catch(PDOException $e) {
+        echo $e->getMessage();
+    }
+    return $DBH;
+}
+
+function db_add_user(User $user)
+{
+    $DBH = open_db();
+    $columns = getColumnNames($DBH, "person");
+    foreach ((array) $user as $key => $value) {
+        if (array_key_exists($key, (array) $columns)) {
+            $a[$key] = $value;
+        }
+    }
+    $keys = array_keys($a);
+    $sql = "INSERT INTO person (".implode(", ",$keys).") \n";
+    $sql .= "VALUES ( :".implode(", :",$keys).")";
+    $q = $DBH->prepare($sql);
+    $i=1;
+    foreach($a as $value)
+        $q->bindParam($i++, $value);
+    print $sql. "\n";
+    return $q->execute($a);
+}
+
+function getColumnNames($dbh, $table)
+{
+    $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
+    try {
+        $stmt = $dbh->prepare($sql);
+        $stmt->bindValue(':table', $table, PDO::PARAM_STR);
+        $stmt->execute();
+        $output = array();
+        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+            $output[$row['COLUMN_NAME']] = $row['COLUMN_NAME'];
+        }
+        return $output;
+    } catch (PDOException $pe) {
+        trigger_error('Could not connect to MySQL database. ' . $pe->getMessage(), E_USER_ERROR);
+    }
+}
+
+try {
+    # MS SQL Server and Sybase with PDO_DBLIB 
+    $DBH = new PDO($DB, $DB_USER, $DB_PASS);
+    $table = "person";
+    $sql = "SHOW COLUMNS FROM " . $table;
+    $stmt = $DBH->prepare($sql);
+    # $stmt->bindValue(':table', $table, PDO::PARAM_STR);
+    $stmt->execute();
+    $output = array();
+    while($row = $stmt->fetch(PDO::FETCH_NUM)){
+        $output[] = $row[0];
+        print $row[0] . "\n";
+        }
+    }
+  catch(PDOException $e) {
+      echo $e->getMessage();
+  }
+
+  $user=new User();
+  $user->username="test";
+  print $user->to_string();
+  db_add_user($user);