getQueryString()); $end = (microtime(true)-$start); //echo "\n".'

'.$q->getQueryString().'
'.$end.'
'; var_dump($res); echo "\n\n"; self::addLog($q->getQueryString(),$end,$res); self::$total_time += $end; return $res; } static function executeString(string $q){ return mysqli_query(self::$DB,$q); } static function startTransaction(){ self::$DB->begin_transaction( MYSQLI_TRANS_START_READ_WRITE); } static function endTransaction(){ self::$DB->commit(); } static function numRows($r){return mysqli_num_rows($r);} static function insert(Query $q){ $r = new stdClass(); $r->r = $q->execute(); $r->id = intval(mysqli_insert_id(self::$DB)); return $r; } static function addUnique(string $table_name,string $name,array $_cols ){ $cols = []; foreach ($_cols as $v) $cols[] = DB::quotes($v); $start = microtime(true); DB::executeString($q = 'ALTER TABLE '.DB::quotes($table_name).' ADD UNIQUE '.DB::quotes($name).' ( '.implode(",",$cols).' )'); $end = (microtime(true)-$start); self::addLog($q,$end); } static function addIndex(string $table_name,string $column ){ $start = microtime(true); DB::executeString($q = 'ALTER TABLE '.DB::quotes($table_name).' ADD INDEX '.$column.'('.DB::quotes($column).')'); $end = (microtime(true)-$start); self::addLog($q,$end); } static function addIndexManyColumns(string $table_name, $columns = [] ){ $cols = []; foreach ($columns as $col){ $cols[] = DB::quotes($col); } $start = microtime(true); DB::executeString($q = 'ALTER TABLE '.DB::quotes($table_name).' ADD INDEX '.implode("_",$columns).'('.implode(",",$cols).')'); $end = (microtime(true)-$start); self::addLog($q,$end); } static function calcRows():int{ $res = 0; $q = "SELECT FOUND_ROWS()"; $r = mysqli_query(self::$DB,$q); if($r and mysqli_num_rows($r) and $l = mysqli_fetch_array($r)) $res = intval($l[0]); return $res; } static function fetch($r){return mysqli_fetch_assoc($r);} static function mq($x){ return self::$DB->real_escape_string($x);} static function mqa(array $a){ foreach ($a as $k=>$v){$a[$k]=self::mq($v);} return $a; } static function quotes($x) { $res = []; $a = explode(".",$x); foreach ($a as $v){ $res[] = "`".self::mq($v)."`"; } return implode(".",$res); //return "`".self::mq($x)."`"; } static function connect(){ $start = microtime(true); if(Config::$MYSQL_SSL_CERTIFICATE){ $conn = mysqli_init(); $conn->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); $conn->ssl_set(NULL, NULL,Config::$MYSQL_SSL_CERTIFICATE, NULL, NULL); $conn->real_connect(Config::$MYSQL_HOST, Config::$MYSQL_ADMIN, Config::$MYSQL_PASSWORD, Config::$MYSQL_BASE, 3306, NULL, MYSQLI_CLIENT_SSL); self::$DB = $conn; } else { self::$DB = new mysqli(Config::$MYSQL_HOST, Config::$MYSQL_ADMIN, Config::$MYSQL_PASSWORD, Config::$MYSQL_BASE); } mysqli_query(self::$DB, 'SET NAMES '.Config::$MYSQL_CHARSET); mysqli_query(self::$DB, "SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));"); $end = (microtime(true)-$start); self::addLog('connect',$end); } static function connectWithCert(){ } static function disconnect(){ self::$DB->close(); } }