class XDB
{
private static $mysqli = null;
+ private static $fatalErrors = true;
public static function connect()
{
return true;
}
+ public static function setNonFatalError()
+ {
+ self::$fatalErrors = false;
+ }
+
public static function _prepare($args)
{
global $globals;
$query = array_map(Array('XDB', 'escape'), $args);
- $query[0] = preg_replace('/#([a-z0-9]*)#/', $globals->dbprefix . '$1', $args[0]);
+ $query[0] = preg_replace('/#([a-z0-9]+)#/', $globals->dbprefix . '$1', $args[0]);
$query[0] = str_replace('%', '%%', $query[0]);
$query[0] = str_replace('{?}', '%s', $query[0]);
return call_user_func_array('sprintf', $query);
} else {
$text = 'Erreur lors de l\'écriture dans la base de données';
}
- if ($globals->debug) {
+ if (php_sapi_name() == 'cli') {
+ $text .= "\n" . XDB::_reformatQuery($query)
+ . "\n" . XDB::$mysqli->error;
+ } else if ($globals->debug) {
$text .= '<pre>' . pl_entities(XDB::_reformatQuery($query)) . '</pre>';
} else {
$file = fopen($globals->spoolroot . '/spool/tmp/query_errors', 'a');
- fwrite($file, '<pre>' . pl_entities(XDB::_reformatQuery($query)) . '</pre>'
- . '<pre>' . XDB::$mysqli->error . '</pre>' . "\n");
+ fwrite($file, '<pre>' . date("Y-m-d G:i:s") . '</pre>'
+ . '<pre>' . pl_entities(XDB::_reformatQuery($query)) . '</pre>'
+ . '<pre>' . XDB::$mysqli->error . '</pre>'
+ . "--------------------------------------------------------------------------------\n");
fclose($file);
}
- Platal::page()->kill($text);
- exit;
+ if (self::$fatalErrors) {
+ Platal::page()->kill($text);
+ exit;
+ } else {
+ throw new Exception($text . " :\n" . $query);
+ }
}
return $res;
}
// Produce the SQL statement representing an array
public static function formatArray(array $array)
{
- return '(' . implode(', ', array_map(array('XDB', 'escape'), $array)) . ')';
+ return self::escape($array);
}
const WILDCARD_EXACT = 0x00;
case 'object':
if ($var instanceof PlFlagSet) {
return "'" . addslashes($var->flags()) . "'";
+ } else {
+ return "'".addslashes(serialize($var))."'";
}
+
case 'array':
- return "'".addslashes(serialize($var))."'";
+ return '(' . implode(', ', array_map(array('XDB', 'escape'), $var)) . ')';
default:
die(var_export($var, true).' is not a valid for a database entry');