예제 #1
0
 /**
  * @param $sql string
  * // todo: add fetch types
  * @param string $fetch_type string [assoc, object, ...]
  * @return array
  */
 public function query($sql, $fetch_type = 'assoc')
 {
     // todo: check sql string
     $this->mysqli->query($sql);
     $rows = array();
     $result = $this->mysqli->query($sql);
     if (!$result) {
         $this->loger->addLog(LOG_ERR, mysqli_error($this->mysqli));
         // todo: goto html output
         die;
     }
     switch ($fetch_type) {
         default:
         case 'assoc':
             while ($row = $result->fetch_assoc()) {
                 $rows[] = $row;
             }
             break;
         case 'object':
             while ($row = $result->fetch_object()) {
                 $rows[] = $row;
             }
             break;
     }
     return $rows;
 }
예제 #2
0
 public function query($sql, $mode = MYSQLI_STORE_RESULT)
 {
     $this->_QSQL[] = $sql;
     Mdl_Mysql_Safecheck::checkquery($sql);
     if ($rs = $this->query($sql, $mode)) {
         return new Mdl_Mysqli_Result($rs);
     }
     $this->_ERR[] = $this->errno . ':' . $this->error;
     return false;
     $this->connect();
     if (__CFG::DEBUG) {
         $starttime = microtime(true);
     }
     $rs = parent::query($sql, $mode);
     if (__CFG::DEBUG) {
         $errno = $this->errno;
         $exec_time = number_format(microtime(true) - $starttime, 6);
         $this->total_exec_time += $exec_time;
         $this->_QSQL[] = array($sql, $exec_time, $this->link, $errno);
         if ($errno > 0) {
             $this->_ESQL[] = array($sql, $this->mysql_debug_backtrace(), $errno, $this->error);
         }
     }
     if (preg_match("/(SELECT|SHOW|DESCRIBE|EXPLAIN)\\s+/i", $sql, $match)) {
         return new Mdl_Mysqli_Result($rs);
     }
     return $rs;
 }
예제 #3
0
 /**
  * Revert this migration
  */
 public function runDown()
 {
     foreach ($this->buildPredown() as $query) {
         Output::verbose('PREDOWN: ' . $query);
         if ($this->db->query($query)) {
             Output::verbose("Ok");
         } else {
             Output::verbose($this->db->error);
         }
     }
     foreach ($this->buildDown() as $query) {
         Output::verbose('DOWN:' . $query);
         $this->db->query($query);
     }
     foreach ($this->buildPostdown() as $query) {
         Output::verbose('POSTDOWN: ' . $query);
         if ($this->db->query($query)) {
             Output::verbose("Ok");
         } else {
             Output::verbose($this->db->error);
         }
     }
     $verT = Helper::get('versiontable');
     $rev = $this->getRev();
     $query = "DELETE FROM `{$verT}` WHERE `rev`={$rev}";
     Output::verbose($query);
     $this->db->query($query);
 }
예제 #4
0
 public function query($query, $mode = MYSQLI_STORE_RESULT)
 {
     $res = parent::query($query, $mode);
     if (!$res) {
         throw new SphinxException($this->error);
     }
     return $res;
 }
예제 #5
0
    /**
     * Using native connector, query against Db server.
     *
     * @param string $query Query to be performed.
     * @return mixed|DbIterator
     * @throws DbLinkException Thrown when an error occur on querying.
     */
    public function query($query)
    {
        $result = $this->link->query($query);
        if (false === $result) {
            $message = <<<ERROR
Error on '{$this->user}@{$this->host}' when executing
{$query}

Message error: {$this->link->error}
ERROR;
            $this->errors[] = $message;
            throw new DbLinkException($message);
        }
        if (!$result instanceof \mysqli_result) {
            return $result;
        }
        return new MysqlIterator($result);
    }
예제 #6
0
 /**
  * Returns the custom table's name for a module
  *
  * @param string $module Module's name
  *
  * @throws \InvalidArgumentException
  *
  * @return string Returns the table name
  */
 public function getModuleCustomTable($module)
 {
     $sugarBean = $this->getBean($module);
     $customTable = $sugarBean->get_custom_table_name();
     $data = $this->db->query("SHOW TABLES LIKE '{$customTable}'");
     if (empty($data)) {
         return '';
     }
     return $customTable;
 }
예제 #7
0
function RegisterMember(User $newUser, $RegDate, $name, $image)
{
    global $connection;
    // if (!find_member($Lname,$DOB)) {
    $query = "INSERT INTO members(id,Lname,Fname,Title,Gender,DOB,MemberImageName,MemberImage,Phone,Email,Program,Year,Hall,Parish,Subgroups,RegDate) \n\tVALUES(\n\t\t'',\n\t\t'{$newUser->getLastName()}',\n\t\t'{$newUser->getFirstName()}',\n\t\t'{$newUser->getTitle()}',\n\t\t'{$newUser->getGender()}',\n\t\t'{$newUser->getDateOfBirth()}',\n\t\t'{$name}',\n\t\t'{$image}',\n\t\t'{$newUser->getPhoneNumber()}',\n\t\t'{$newUser->getEmail()}',\n\t\t'{$newUser->getProgram()}',\n\t\t'{$newUser->getYear()}',\n\t\t'{$newUser->getHall()}',\n\t\t'{$newUser->getParish()}',\n\t\t'{$newUser->getSubGroup()}',\n\t\t'{$RegDate}'\n\t\t)";
    // mysql_query($query,$connection);
    // // confirm_query($result_set);
    // if (mysql_affected_rows() == 1) {
    // 	echo "success";
    // }
    // else {
    // 	echo "err2";
    // }
    $mysqli = new Mysqli('localhost', 'root', 'PASSword1', 'paxromanadata');
    return $mysqli->query($query);
}
예제 #8
0
 /**
  * Run the actual query with deadlock checks
  * @return bool|object
  * @throws TransactionDeadlockException
  */
 protected function runQuery()
 {
     $numRetry = 0;
     do {
         $returned = $this->isSingleQuery ? $this->connection->query($this->sqlQuery) : $this->connection->multi_query($this->sqlQuery);
         if ($returned) {
             break;
         }
         $errno = mysqli_errno($this->connection);
         if ($errno != '1205' && $errno != '1213') {
             break;
         }
         // innodb deadlock; retry or if in transaction throw exception
         if ($this->isTransaction) {
             $this->rollback();
             throw new TransactionDeadlockException('Transaction deadlock.');
         }
         if ($numRetry == 5) {
             sleep(1);
         }
         ++$numRetry;
     } while ($numRetry < 10);
     return $returned;
 }
<?php 
error_reporting(0);
$conn = new Mysqli($host, $usuario, $cont, $bdd);
if ($conn->connect_error) {
    die($conn->connect_error);
}
if ($_POST) {
    $nombre = $_POST['nombre'];
    $email = $_POST['email'];
    $telefono = $_POST['telefono'];
    $direccion = $_POST['direccion'];
    $usuario = $_POST['usuario'];
    $contrasenia = $_POST['contrasenia'];
    if ($nombre != '' && $email != '' && $telefono != '' && $direccion != '' && $usuario != '' && $contrasenia != '') {
        $q_insert = "insert into registro(nombre,email,telefono,direccion,usuario,contrasenia)\n                  values ('{$nombre}', '{$email}', '{$telefono}', '{$direccion}','{$usuario}','{$econtrasenia}')";
        $res = $conn->query($q_insert);
        if (!$res) {
            echo '<div align="center"> No se puede guardar datos' . $conn->error . '</div>';
        } else {
            echo '<div  align="center">Informacion guardada correctamente.</div>';
        }
    }
}
?>
<p align="center">
          <a href="./index.html">Formulario de registro</a>
        </p>
        
      
</body>
</html>
예제 #10
0
파일: data.php 프로젝트: sochea09/php-curl
<?php

if (isset($_POST['name'], $_POST['age'])) {
    $db = new Mysqli("localhost", "root", "", "postdata");
    $name = $db->real_escape_string($_POST['name']);
    $age = (int) $_POST['age'];
    $query = "INSERT INTO data SET mydata='{$name}, {$age}'";
    $db->query($query);
}
예제 #11
0
error_reporting(E_ALL);
ini_set('display_errors', 1);
require 'vendor/autoload.php';
use sandeepshetty\shopify_api;
?>

<?php 
echo 'ssss';
session_start();
//start a session
$db = new Mysqli("localhost", "root", "", "shopify_app");
if ($db->connect_errno) {
    die('Connect Error: ' . $db->connect_errno);
}
$select_settings = $db->query("SELECT * FROM tbl_appsettings WHERE id = 1");
$app_settings = $select_settings->fetch_object();
if (!empty($_GET['shop'])) {
    //check if the shop name is passed in the URL
    $shop = $_GET['shop'];
    //shop-name.myshopify.com
    $select_store = $db->query("SELECT store_name FROM tbl_usersettings WHERE store_name = '{$shop}'");
    //check if the store exists
    if ($select_store->num_rows > 0) {
        if (shopify_api\is_valid_request($_GET, $app_settings->shared_secret)) {
            //check if its a valid request from Shopify
            $_SESSION['shopify_signature'] = $_GET['signature'];
            $_SESSION['shop'] = $shop;
            header('Location: http://localhost/shopifyapi/admin.php');
            //redirect to the admin page
        }
예제 #12
0
<?php 
//include 'conf.php';
//$name = $_POST['name'];
$comment = $_POST['comment'];
$article_id = $_POST['article_id'];
$user_login = $_POST['user_login'];
echo $article_id;
echo $comment;
$mysqli = new Mysqli('localhost', 'u911040123_admin', 'olko111', 'u911040123_ki');
//$mysqli->query("SET NAMES utf8");
$mysqli->query("INSERT INTO `comm`(`article_id`, `user_login`, `comment`) VALUES('{$article_id}','{$user_login}', '{$comment}')");
?>


예제 #13
0
<?php

header("Content-Type: text/html; charset=UTF-8");
//$count = $_POST['count'];
$data = $_POST['data'];
//$article_id=$_POST['article_id'];
//echo $count ;
//echo $article_id;
$mysqli = new Mysqli('localhost', 'root', '', 'ki');
$mysqli->query("SET NAMES utf8");
$r = array();
$mysqli->query("INSERT INTO `comm`( `comment`) VALUES( '{$data}')");
예제 #14
0
 /**
  * Чистый запрос для дебаггера
  *
  * $param string $sql
  *    
  * @return void
  */
 public function rawQuery($sql)
 {
     return parent::query($sql);
 }
예제 #15
0
<?php

require_once 'vendor/autoload.php';
use phpish\shopify;
session_start();
//start a session
$db = new Mysqli("localhost", "root", "Coramaebanjo1!", "zoomATron");
if ($db->connect_errno) {
    die('Connect Error: ' . $db->connect_errno);
}
$select_settings = $db->query("SELECT * FROM zoomATronsettings WHERE id = 1");
$app_settings = $select_settings->fetch_object();
if (!empty($_GET['shop'])) {
    //check if the shop name is passed in the URL
    $shop = $_GET['shop'];
    //shop-name.myshopify.com
    $select_store = $db->query("SELECT store_name FROM zat_usersettings WHERE store_name = '{$shop}'");
    //check if the store exists
    if ($select_store->num_rows > 0) {
        if (shopify_api\is_valid_request($_GET, $app_settings->shared_secret)) {
            //check if its a valid request from Shopify
            $_SESSION['shopify_signature'] = $_GET['signature'];
            $_SESSION['shop'] = $shop;
            header('Location: http://localhost/shopify_testing/admin.php');
            //redirect to the admin page
        }
    } else {
        //convert the permissions to an array
        $permissions = json_decode($app_settings->permissions, true);
        //get the permission url
        $permission_url = shopify_api\permission_url($_GET['shop'], $app_settings->api_key, $permissions);
예제 #16
0
$page = 0;
$date = '2011-06-20';
$loop = true;
$numrows = 0;
$limit = isset($ops['limit']) && !empty($ops['limit']) ? $ops['limit'] : 100000;
$start = isset($ops['start']) && !empty($ops['start']) ? $ops['start'] : 218000000;
$total = isset($ops['total']) && !empty($ops['total']) ? $ops['total'] : 1000000;
$end = $start + $total;
while ($loop) {
    $offset = $page * $limit;
    $sql = "SELECT \n\t  \t  \t   PageView.session,DimRequest.request_uri,\n\t  \t  \t   DimDate.report_hour,DimDate.report_day,DimDate.report_month,DimDate.report_year,\n\t  \t  \t   DimLocation.country_code,\n\t  \t  \t   DimLocation.region_name,\n\t  \t  \t   PageView.mobile\n\t  \t  \t   FROM fact_page_views `PageView`\n\t  \t  \t   INNER JOIN dim_requests `DimRequest` on DimRequest.id = PageView.dim_request_id\n\t  \t  \t   INNER JOIN dim_dates `DimDate` on DimDate.id = PageView.dim_date_id\n\t  \t  \t   INNER JOIN dim_locations `DimLocation` on DimLocation.id = PageView.dim_location_id\n\t  \t  \t   WHERE PageView.id > {$start} AND PageView.id <= {$end}\n\t  \t  \t   ORDER BY PageView.id ASC\n\t  \t  \t   LIMIT {$offset},{$limit}";
    //$mysql->refresh();
    //test
    $start_time = time();
    echo "Start Query Page ({$page}) \n";
    $test = $mysql->query($sql);
    echo "Query Time:";
    echo time() - $start_time;
    echo "\n";
    echo "Query: \n";
    echo $sql;
    echo "\n";
    if ($test->num_rows > 0) {
        while ($row = $test->fetch_row()) {
            foreach ($row as $k => $v) {
                $row[$k] = preg_replace("/[',]/", "", $v);
            }
            $day = strlen($row[3]) == 1 ? "0" . $row[3] : $row[3];
            //date string
            $row[] = $row[5] . "-" . $row[4] . "-" . $day;
            //date hour string
예제 #17
0
<?php

header("Content-Type: text/html; charset=UTF-8");
$count = $_POST['count'];
//$article_id=$_POST['article_id'];
//echo $count ;
//echo $article_id;
$mysqli = new Mysqli('localhost', 'root', '', 'ki');
$mysqli->query("SET NAMES utf8");
$r = array();
$result = $mysqli->query("SELECT * FROM comm WHERE id > {$count}");
while ($row = $result->fetch_assoc()) {
    $r[] = $row;
}
if (empty($r)) {
    echo "empty";
} else {
    echo json_encode($r);
}
예제 #18
0
파일: DB.php 프로젝트: Jud/Objectedb
 public function query($q)
 {
     return parent::query($q);
 }
<meta charset="utf-8">
<title>Cancelar Registro</title>


</head>
<body>


<?php 
$conn = new Mysqli($host, $usuario, $cont, $bdd);
if ($conn->connect_error) {
    die($conn->connect_error);
}
if ($_POST) {
    $id = $_POST['id'];
    $q_delete = "delete from registro where id ='{$id}'";
    $r = $conn->query($q_delete);
    if (!$r) {
        echo '<div align="center">No se puede cancelar el registro seleccionado</div>';
    } else {
        echo '<div align="center">Registro se a cancelado exitosamente</div>';
    }
}
?>

<p align="center">
          <a href="./index.php">Formulario de registro</a>
        </p>

</body>
</html>
예제 #20
0
<?php

$allSets = json_decode(file_get_contents('/var/www/AllSets.json'));
$db = new Mysqli("localhost", "root", "root", "Hearthstone");
$now = date('Y-m-d H:i:s', time());
foreach ($allSets as $set => $cards) {
    foreach ($cards as $card) {
        // reset
        unset($setId);
        $class = 1;
        $faction = 1;
        $rarity = 1;
        $artist = 1;
        // Set
        $query = "SELECT id FROM `Set` WHERE name = '{$set}'";
        $result = $db->query($query);
        $row = mysqli_fetch_assoc($result);
        $setId = $row['id'];
        if ($setId == NULL) {
            $query = "INSERT INTO `Set` (name, created) VALUES('{$set}', '{$now}')";
            $db->query($query);
            $setId = $db->insert_id;
        }
        // Class
        if ($card->playerClass) {
            $query = "SELECT id FROM Class WHERE name = '{$card->playerClass}'";
            $result = $db->query($query);
            $row = mysqli_fetch_assoc($result);
            $class = $row['id'];
            if ($class == NULL) {
                $query = "INSERT INTO Class (name, created) VALUES('{$card->playerClass}', '{$now}')";
예제 #21
0
<?php

$__t1 = microtime(TRUE);
if (!file_exists(__DIR__ . '/config.php')) {
    die("缺少 config.php 文件,可以尝试 mv config.sample.php config.php");
} else {
    require_once __DIR__ . '/config.php';
}
/// 创建数据库连接
$mysqli = new Mysqli($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_DATABASE);
if (!$mysqli) {
    LOGE('无法创建 MySQL 连接: ' . $mysqli->error);
    die;
}
$mysqli->query("set NAMES 'utf8'");
$CSP_NONCE = uniqid() . 'X' . rand();
require_once __DIR__ . '/func.php';
function getAmount()
{
    $id = $_GET['id'];
    $type = $_GET['type'];
    $mysqli = new Mysqli(DBSERVER, DBUSER, DBPWD, DB);
    switch ($type) {
        case "cantine":
        case "repas":
            $query = "SELECT `montantfcp`,`montanteuro`,`restearegler` FROM `" . DB . "`.`factures_cantine` WHERE `idfacture` = {$id}";
            $result = $mysqli->query($query);
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                //$output = "&montantcfp=".$row['montantfcp']."&montanteuro=".$row['montanteuro']."&restearegler=".$row['restearegler'];
                $output = $row;
            }
            break;
        case "etal":
            $query = "SELECT `montantfcp`,`montanteuro`,`restearegler` FROM `" . DB . "`.`factures_etal` WHERE `idfacture` = {$id}";
            $result = $mysqli->query($query);
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                //$output = "&montantcfp=".$row['montantfcp']."&montanteuro=".$row['montanteuro']."&restearegler=".$row['restearegler'];
                $output = $row;
            }
            break;
        case "amarrage":
            $query = "SELECT `montantfcp`,`montanteuro`,`restearegler` FROM `" . DB . "`.`factures_amarrage` WHERE `idfacture` = {$id}";
            $result = $mysqli->query($query);
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                //$output = "&montantcfp=".$row['montantfcp']."&montanteuro=".$row['montanteuro']."&restearegler=".$row['restearegler'];
                $output = $row;
            }
            break;
    }
    $mysqli->close();
    return $output;
}
예제 #23
0
<?php

//error_reporting(E_ALL);
session_start();
$mysqli = new Mysqli('localhost', 'root', '923885', 'cacp_gestor');
//$mysqli = new Mysqli('192.168.0.58', 'root', 'admin923885', 'cacp_gestor');
//$mysqli = new Mysqli('localhost:3307', 'root', 'admin923885', 'cacp_gestor');
$empresaId = $_SESSION['selected_company'];
$result = $mysqli->query("SET NAMES 'UTF8'") or die($mysqli->error);
$result = $mysqli->query("\t\t\t\n\t\t\t\tSELECT \n\t\t\t\tid\t\t\t\t\n\t\t\t\tFROM\t\t\t\t\t\t\t\t\n\t\t\t\tusuarios\n\t\t\t\tWHERE\n\t\t\t\thash = '" . $_SESSION['userhash'] . "'\t\t\t\t\n\t\t\t\t") or die($mysqli->error);
$userId = null;
if ($result->num_rows) {
    $r = $result->fetch_assoc();
    $userId = $r['id'];
}
예제 #24
0
 public function __construct()
 {
     $args = func_get_args();
     for ($i = 0; $i < 6; $i++) {
         if (!isset($args[$i])) {
             $args[$i] = NULL;
         }
     }
     if ($args[0] instanceof \MySQLi) {
         $mysqli = $args[0];
     } else {
         $mysqli = new \Mysqli($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
     }
     $callbacks = array();
     $wrapper = $this;
     $callbacks['__tostring'] = function () use($mysqli) {
         @($res = '(Gaia\\DB\\MySQLi object - ' . "\n" . '  [affected_rows] => ' . $mysqli->affected_rows . "\n" . '  [client_info] => ' . $mysqli->client_info . "\n" . '  [client_version] => ' . $mysqli->client_version . "\n" . '  [connect_errno] => ' . $mysqli->connect_errno . "\n" . '  [connect_error] => ' . $mysqli->connect_error . "\n" . '  [errno] => ' . $mysqli->errno . "\n" . '  [error] => ' . $mysqli->error . "\n" . '  [field_count] => ' . $mysqli->field_count . "\n" . '  [host_info] => ' . $mysqli->host_info . "\n" . '  [info] => ' . $mysqli->info . "\n" . '  [insert_id] => ' . $mysqli->insert_id . "\n" . '  [server_info] => ' . $mysqli->server_info . "\n" . '  [server_version] => ' . $mysqli->server_version . "\n" . '  [sqlstate] => ' . $mysqli->sqlstate . "\n" . '  [protocol_version] => ' . $mysqli->protocol_version . "\n" . '  [thread_id] => ' . $mysqli->thread_id . "\n" . '  [warning_count] => ' . $mysqli->warning_count . "\n" . ')');
         return $res;
     };
     $callbacks['prep_args'] = $prep_args = function ($query, array $args) use($mysqli) {
         if (!$args || count($args) < 1) {
             return $query;
         }
         return \Gaia\DB\Query::prepare($query, $args, function ($v) use($mysqli) {
             return "'" . $mysqli->real_escape_string($v) . "'";
         });
     };
     $callbacks['execute'] = function ($query) use($mysqli, $prep_args) {
         $args = func_get_args();
         array_shift($args);
         return $mysqli->query($prep_args($query, $args));
     };
     $callbacks['start'] = function () use($mysqli) {
         return $mysqli->query('START TRANSACTION');
     };
     $callbacks['autocommit'] = function ($mode) use($wrapper) {
         return $mode ? $wrapper->commit() : $wrapper->start();
     };
     $callbacks['hash'] = function () use($mysqli) {
         return spl_object_hash($mysqli);
     };
     $callbacks['rollback'] = function () use($mysqli) {
         return $mysqli->query('ROLLBACK');
     };
     $callbacks['commit'] = function () use($mysqli) {
         return $mysqli->query('COMMIT');
     };
     $callbacks['prepare'] = function ($query) {
         trigger_error('unsupported method ' . __CLASS__ . '::' . __FUNCTION__, E_USER_ERROR);
         exit;
     };
     $callbacks['close'] = function () use($mysqli, $wrapper) {
         Connection::remove($wrapper);
         if ($wrapper->lock) {
             return FALSE;
         }
         $rs = $mysqli->close();
         $wrapper->lock = TRUE;
         return $rs;
     };
     $callbacks['__get'] = function ($k) use($mysqli) {
         return $mysqli->{$k};
     };
     $callbacks['__call'] = function ($method, array $args) use($mysqli) {
         return call_user_func_array(array($mysqli, $method), $args);
     };
     $callbacks['query'] = function ($query, $mode = MYSQLI_STORE_RESULT) use($mysqli, $wrapper) {
         if ($wrapper->lock) {
             return FALSE;
         }
         $res = $mysqli->query($query, $mode);
         if ($res) {
             return $res;
         }
         if ($wrapper->txn) {
             Transaction::block();
             $wrapper->lock = TRUE;
         }
         return $res;
     };
     $callbacks['multi_query'] = function ($query) use($mysqli, $wrapper) {
         if ($wrapper->lock) {
             return FALSE;
         }
         $res = $mysqli->multi_query($query);
         if ($res) {
             return $res;
         }
         if ($wrapper->txn) {
             Transaction::block();
             $wrapper->lock = TRUE;
         }
         return $res;
     };
     $callbacks['real_query'] = function ($query) use($mysqli, $wrapper) {
         if ($wrapper->lock) {
             return FALSE;
         }
         $res = $mysqli->real_query($query);
         if ($res) {
             return $res;
         }
         if ($wrapper->txn) {
             Transaction::block();
             $wrapper->lock = TRUE;
         }
         return $res;
     };
     $callbacks['isa'] = function ($name) use($wrapper, $mysqli) {
         if ($wrapper instanceof $name) {
             return TRUE;
         }
         if ($mysqli instanceof $name) {
             return TRUE;
         }
         $name = strtolower($name);
         if ($name == 'mysqli') {
             return TRUE;
         }
         //if( strpos($name, 'mysqli') !== FALSE ) return TRUE;
         return FALSE;
     };
     parent::__construct($callbacks);
 }
예제 #25
0
 /**
  * Get all revisions that have been applied to the database
  *
  * @param Mysqli $db Database instance
  * @return array|bool List of applied revisions, False on error
  */
 static function getDatabaseVersions(Mysqli $db)
 {
     $result = array();
     $tbl = self::get('versiontable');
     $res = $db->query("SELECT rev FROM `{$tbl}` ORDER BY rev ASC");
     if ($res === false) {
         return false;
     }
     while ($row = $res->fetch_array(MYSQLI_NUM)) {
         $result[] = $row[0];
     }
     return $result;
 }