X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=classes%2Fxdb.php;h=a51e210a1bfaee1ebf263ec8fbf62f2379ffa972;hb=adc69ced9c75421c5ee596fbd0a3426fffb9940c;hp=5bb1fefa3f4439b86d677b886a71b3779bd1e983;hpb=d0327f6de73e81c4bcc656471ca4161e4f1e1e1b;p=platal.git diff --git a/classes/xdb.php b/classes/xdb.php index 5bb1fef..a51e210 100644 --- a/classes/xdb.php +++ b/classes/xdb.php @@ -76,7 +76,9 @@ class XDB global $globals; if (!XDB::$mysqli && !XDB::connect()) { - return false; + header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); + Platal::page()->kill('Impossible de se connecter à la base de données.'); + exit; } if ($globals->debug & DEBUG_BT) { @@ -100,6 +102,26 @@ class XDB XDB::$mysqli->error, $explain); } + + if ($res === false) { + header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); + if (strpos($query, 'INSERT') === false && strpos($query, 'UPDATE') === false + && strpos($query, 'REPLACE') === false && strpos($query, 'DELETE') === false) { + $text = 'Erreur lors de l\'interrogation de la base de données'; + } else { + $text = 'Erreur lors de l\'écriture dans la base de données'; + } + if ($globals->debug) { + $text .= '
' . pl_entities(XDB::_reformatQuery($query)) . '
'; + } else { + $file = fopen($globals->spoolroot . '/spool/tmp/query_errors', 'a'); + fwrite($file, '
' . pl_entities(XDB::_reformatQuery($query)) . '
' + . '
' . XDB::$mysqli->error . '
' . "\n"); + fclose($file); + } + Platal::page()->kill($text); + exit; + } return $res; } @@ -166,6 +188,9 @@ class XDB return 'NULL'; case 'object': + if ($var instanceof PlFlagSet) { + return "'" . addslashes($var->flags()) . "'"; + } case 'array': return "'".addslashes(serialize($var))."'";