dbLink = mysqli_connect($Host,$User,$Pass,$db); if (!$this->dbLink) { trigger_error("Error: Unable to connect to MySQL.".mysqli_connect_error()); //echo "Error: Unable to connect to MySQL." . PHP_EOL; //echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; //echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; exit; } /* change character set to utf8 */ if (!mysqli_set_charset($this->dbLink, "utf8")) { trigger_error("Error loading character set utf8:".mysqli_error($this->dbLink)); } return $this->dbLink; } function free() { $this->Record = array(); $this->Result = 0; unset($this->Row); } function QueryLang($OldQuery) { if (strstr($OldQuery,"LANG".$_SESSION["ssSelectedLang"])) return $OldQuery; if (!is_array($_SESSION["ssLang"])) return $OldQuery; // Otan gino sto sql kai to p.x. to LANGenglish na mhn to kanei automata convert if (strpos($OldQuery,"LANG")) { $str = (substr($OldQuery,strpos($OldQuery,"LANG")+4)); } foreach($_SESSION["ssLang"] as $k=>$v) { if ($v == $_SESSION["ssSelectedLang"]) { $ret = str_replace("LANG","LANG".$_SESSION["ssSelectedLang"],$OldQuery); } } $ret= str_replace("greekgreek","greek",$ret); $ret= str_replace("englishgreek","greek",$ret); $ret= str_replace("englishenglish","english",$ret); $ret= str_replace("greekenglish","english",$ret); return $ret; } function query($Query,$Debug=0) { $Query = trim($Query); if(!$Query) return; if($this->Result) $this->free(); $this->OriginalQuery=$Query; if (substr(strtolower($Query),0,5)!="alter") { $Query = $this->Query = $this->QueryLang($Query); } $this->DataField = array(); $this->Result = mysqli_query($this->dbLink,$Query); if($Debug>=0 && !$this->Result) { if ($_SERVER['REMOTE_ADDR'] == '85.72.38.217') { dev($Query); dev(error_get_last(),mysqli_error($this->dbLink)); } trigger_error("Query: ".$Query); trigger_error(error_get_last()); trigger_error(mysqli_error($this->dbLink)); } elseif($Debug==1) { if ($_SERVER['REMOTE_ADDR'] == '85.72.38.217') { dev($Query); } } $this->Row = @$this->num_rows(); return($this->Result); } function insert($tbl,$Fld) { $_keys = array_keys($Fld); foreach($_keys as $k=>$v) { if (strstr($v,"LANG")) { $keys[$k]=$v.$_SESSION["ssSelectedLang"]; } else { $keys[$k]=$v; } } $vals = array_values($Fld); $key = ''; $val = ''; $type = ''; foreach($keys AS $key_value) { if($key == '') { $key = '`'.$key_value.'`'; $val = '?'; } else { $key .= ', `'.$key_value.'`'; $val .= ', ?'; } $typeDef[]="s"; } if ($stmt = mysqli_prepare($this->dbLink,"INSERT INTO `$tbl` ($key) values ($val)")) { for($i = 0; $i < count($typeDef); $i++) { $params[$keys[$i]] = $typeDef[$i]; } $this->bindParameters($stmt, $params); for($i = 0; $i < count($typeDef); $i++) { $params[$keys[$i]] = $vals[$i]; } if(!$stmt->execute() ) { trigger_error("Execute Statement Error:".$stmt->error); //printf("Execute Statement Error: %s\n", $stmt->error); exit; } $stmt->close(); } else { //dev(error_get_last()); //$insert = "Failure"; } } function query_bind($sql,$arData) { $ret = array(); if ($stmt = mysqli_prepare($this->dbLink,$this->QueryLang($sql))) { if (count($arData)==1) { mysqli_stmt_bind_param($stmt,"s",$arData[0]); } elseif (count($arData)==2) { mysqli_stmt_bind_param($stmt,"ss",$arData[0],$arData[1]); } mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); if ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { foreach($row as $k=>$v) { if (strstr($k,"LANG")) { $row[substr($k,0,(strpos($k,"LANG")+4))]=str_replace('\"','"',$v); } else { $row[$k]=str_replace('\"','"',$v); } } $ret=$row; } mysqli_stmt_close($stmt); } return $ret; } function update($tbl,$Primary,$_Field) { $query_bind = array(); foreach($_Field as $k=>$v) { if (strstr($k,"LANG")) { $Field[$k.$_SESSION["ssSelectedLang"]]=$v; } else { $Field[$k]=$v; } } //dev("as",$Field); $set_v=$set_k=""; $i_cnt = (count($Field)+count($Primary))-1; $i_str=""; for($i=0;$i<=$i_cnt;$i++) { $i_str.="s"; $typeDef[]="s"; } foreach($Field as $k=>$v) { $set_v.="`".$k."`"."=?,"; $query_bind[$k]=$v; } foreach($Primary as $k=>$v) { $set_k.="`".$k."`"."=? and "; $query_bind[$k]=$v; } $keys = array(); $keys = array_keys($query_bind); /* foreach($_keys as $k=>$v) { if (strstr($v,"LANG")) { $keys[$k]=$v.$_SESSION["ssSelectedLang"]; } else { $keys[$k]=$v; } } */ //dev($keys); $vals = array_values($query_bind); if ($stmt = mysqli_prepare($this->dbLink,"UPDATE `".$tbl."` SET ".substr($set_v,0,-1)." WHERE ".substr($set_k,0,-4))) { for($i = 0; $i < count($typeDef); $i++) { $params[$keys[$i]] = $typeDef[$i]; } $this->bindParameters($stmt, $params); for($i = 0; $i < count($typeDef); $i++) { $params[$keys[$i]] = $vals[$i]; } if(!$stmt->execute() ) { trigger_error("Execute Statement Error:".$stmt->error); } // printf("Execute Statement Error: %s\n", $stmt->error); exit; } $stmt->close(); } else { //dev(error_get_last()); //$insert = "Failure"; } } function bindParameters(&$statement, &$params) { $args = array(); $args[] = implode('', array_values($params)); foreach ($params as $paramName => $paramType) { $args[] = &$params[$paramName]; $params[$paramName] = null; } call_user_func_array(array(&$statement, 'bind_param'), $args); } function next() { if(!$this->Result) return 0; $tmpG = $tmp = array(); $Rec = mysqli_fetch_array($this->Result); if ($Rec) foreach($Rec as $k=>$v) { $r[$k] = $v; if (strstr($k,"LANG")) { if ($this->DataField[$k][type]=='blob') { $rr[substr($k,0,strpos($k,"LANG")+4)]=str_replace('\"','"',$Rec[substr($k,0,strpos($k,"LANG")+4).$_SESSION["ssSelectedLang"]]); } else { $rr[substr($k,0,strpos($k,"LANG")+4)]=str_replace('\"','"',$Rec[substr($k,0,strpos($k,"LANG")+4).$_SESSION["ssSelectedLang"]]); } } } $this->Record=$r; if (is_array($rr)) { $this->Record+=$rr; } $this->Row++; $status = is_array($this->Record); if (!$status && $this->Auto_Free) $this->free(); return $status; } function insert_id() { return(@mysqli_insert_id($this->dbLink ? $this->dbLink : NULL)); } function affected_rows() { return(@mysqli_affected_rows($this->dbLink ? $this->dbLink : NULL)); } function num_rows() { if ($this->Result) { return mysqli_num_rows($this->Result); } else { return 0; } } function num_fields() { //return($this->Result ? @mysql_num_fields($this->Result) : 0); } function eof() { return($this->Row>$this->num_rows()); } function close() { mysqli_close($this->dbLink ? $this->dbLink : NULL); } function dump() { $dbDump = new mysqldb(); $dbDump->query($this->OriginalQuery); $buf =""; if($do>-1) $buf.=""; /* $buf.=""; while($dbDump->next()) { $data = $dbDump->QueryFields[$dbDump->Field]; $buf.=""; } $buf.=""; */ while ($dbDump->next()) { $buf.=""; foreach($dbDump->Record as $i=>$v) if(is_int($i)) $buf.=""; $buf.=""; } $buf.="
Rows: ".$dbDump->num_rows()."".$this->Query."
".($full ? $data[table].".".$data[name]:$data[name])."
".htmlspecialchars($v)."
"; echo $buf; } } ?>