define('DBHOST', 'localhost');
define('DBUSER', 'openstreetmap');
define('DBPASS', 'G4GBGRvqNrFmHw4H');
define('DBDATABASE', 'openstreetmap');
$GLOBALS['pocet_sql_pozadavku'] = 0;
$GLOBALS['cas_sql_pozadavku'] = 0;
class System {
static function ZapisDoLogu($kam,$text) {
echo $kam.': '.$text;
}
static function Chyba($text) {
Die($text);
}
}
function mysql_escape_string($retezec) {
if (!IsSet($GLOBALS['dbsspojeni'])) SQL::PripojSeKDatabazi();
return $GLOBALS['dbsspojeni']->escape_string($retezec);
}
class SQL {
static function PripojSeKDatabazi() {
$pokusu = 0;
do {
if ($pokusu++ == 5) {
System::ZapisDoLogu('chyba_db',$GLOBALS['dbsspojeni']->connect_error);
Die('');//'Nepodařilo se spojit s databází. Přijďte prosím později.');
}
if ($pokusu != 1) Sleep(1);
$GLOBALS['dbsspojeni'] = new mysqli(DBHOST,DBUSER,DBPASS,DBDATABASE);
} while ($GLOBALS['dbsspojeni']->connect_errno);
SQL::Pozadavek('SET NAMES utf8');
}
static function Pozadavek($pozadavek,$ignorovatchybu=false) {
if (!IsSet($GLOBALS['dbsspojeni'])) SQL::PripojSeKDatabazi();
$ms1 = SQL::PresnyCas();
$navrat = $GLOBALS['dbsspojeni']->query($pozadavek);
$ms2 = SQL::PresnyCas();
$GLOBALS['pocet_sql_pozadavku']++;
$GLOBALS['cas_sql_pozadavku'] += $ms2 - $ms1;
// if (($ms2 - $ms1) > 3) System::ZapisDoLogu('dlouhe_dotazy',Round($ms2-$ms1,5).': '.$pozadavek);
if ($navrat === false && !$ignorovatchybu) System::Chyba('Chyba při práci s databází!
'.$pozadavek.'
'.$GLOBALS['dbsspojeni']->error);
return $navrat;
}
static function VratRadek($pozadavek) {
$vysledek = SQL::Pozadavek($pozadavek);
if ($vysledek === false) return false;
return $vysledek->fetch_assoc();
}
static function VratPole($pozadavek) {
$vysledek = SQL::Pozadavek($pozadavek);
if ($vysledek === false) return false;
$navrat = Array();
for ($i=0; $navrat[$i]=$vysledek->fetch_assoc(); $i++);
UnSet($navrat[$i]);
return($navrat);
}
static function VratHodnotu($pozadavek) {
$vysledek = SQL::Pozadavek($pozadavek);
if ($vysledek === false) return false;
return $vysledek->fetch_array(MYSQLI_NUM)[0];
}
static function NejakyVysledek($pozadavek,&$vysledek=false) {
$vysledek = SQL::VratRadek($pozadavek);
if ($vysledek === false) return false;
else return true;
}
static function OvlivnenychRadku() {
if (!IsSet($GLOBALS['dbsspojeni'])) SQL::PripojSeKDatabazi();
return $GLOBALS['dbsspojeni']->affected_rows;
}
static function PosledniID() {
return $GLOBALS['dbsspojeni']->insert_id;
}
static function OdpojSeOdDatabaze() {
$GLOBALS['dbsspojeni']->close();
UnSet($GLOBALS['dbsspojeni']);
}
static function PresnyCas() {
return hrtime(true) / 1000;
}
static function VratHodnotuDoDotazu($udaje,$hodnota,$editace,$typ=text,$pokracovat=true) {
if (!IsSet($udaje[$hodnota]) && $typ != 'cislo')
System::Chyba('Neexistující hodnota "'.$hodnota.'" v poli!');
$navrat = '';
if ($editace) $navrat .= $hodnota.' = ';
if ($udaje[$hodnota] === false) $navrat .= 'NULL';
else switch($typ) {
case 'text': $navrat .= '"'.MySQL_Escape_String($udaje[$hodnota]).'"'; break;
case 'cislo': $navrat .= ''.($udaje[$hodnota]+0); break;
case 'null': $navrat .= ($udaje[$hodnota] == '' ? 'NULL' : '"'.MySQL_Escape_String($udaje[$hodnota]).'"'); break;
default: System::Chyba('Neznámý typ hodnoty!');
}
if ($pokracovat) $navrat .= ',';
return $navrat;
}
static function VygenerujPrikazKZapisu($udaje,$hodnoty,$editace) {
$navrat = '';
$i=0;
foreach($hodnoty as $index => $hodnota) {
if (Is_String($index)) {
switch($hodnota) {
case 'cislo':
case 'null':
$typ = $hodnota; $hodnota = $index;
break;
default: System::Chyba('Neznámý typ hodnoty!');
}
}
else $typ = 'text';
$navrat .= SQL::VratHodnotuDoDotazu($udaje,$hodnota,$editace,$typ,++$i < Count($hodnoty));
}
return($navrat);
}
}
?>