<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
global $globals;
XDB::$mysqli = new mysqli($globals->dbhost, $globals->dbuser, $globals->dbpwd, $globals->dbdb);
- if ($globals->debug & 1) {
+ if ($globals->debug & DEBUG_BT) {
$bt = new PlBacktrace('MySQL');
if (mysqli_connect_errno()) {
$bt->newEvent("MySQLI connection", 0, mysqli_connect_error());
public static function _prepare($args)
{
- $query = array_map(Array('XDB', '_db_escape'), $args);
+ $query = array_map(Array('XDB', 'escape'), $args);
$query[0] = str_replace('{?}', '%s', str_replace('%', '%%', $args[0]));
return call_user_func_array('sprintf', $query);
}
return false;
}
- if ($globals->debug & 1) {
+ if ($globals->debug & DEBUG_BT) {
$explain = array();
if (strpos($query, 'FOUND_ROWS()') === false) {
$res = XDB::$mysqli->query("EXPLAIN $query");
$res = XDB::$mysqli->query($query);
- if ($globals->debug & 1) {
+ if ($globals->debug & DEBUG_BT) {
PlBacktrace::$bt['MySQL']->stop(@$res->num_rows ? $res->num_rows : XDB::$mysqli->affected_rows,
XDB::$mysqli->error,
$explain);
public static function execute()
{
- return XDB::_query(XDB::_prepare(func_get_args()));
+ global $globals;
+ $args = func_get_args();
+ if ($globals->mode != 'rw' && !strpos($args[0], 'logger')) {
+ return;
+ }
+ return XDB::_query(XDB::_prepare($args));
}
public static function iterator()
}
public static function error()
- {
+ {
return XDB::$mysqli->error;
}
return XDB::$mysqli->affected_rows;
}
- public static function _db_escape($var)
+ public static function escape($var)
{
switch (gettype($var)) {
case 'boolean':
return 'NULL';
case 'object':
+ if ($var instanceof PlFlagSet) {
+ return "'" . addslashes($var->flags()) . "'";
+ }
case 'array':
return "'".addslashes(serialize($var))."'";