From abdfb36161087bd460198156aafd76baf4a1ac13 Mon Sep 17 00:00:00 2001 From: JKA Network Date: Mon, 28 Feb 2022 09:02:27 +0000 Subject: [PATCH] Update dbwrapper.php Finish mssql add, now is stable --- src/dbwrapper.php | 163 +++++++++++++++++++++++++--------------------- 1 file changed, 87 insertions(+), 76 deletions(-) diff --git a/src/dbwrapper.php b/src/dbwrapper.php index 1dfd848..11fd705 100644 --- a/src/dbwrapper.php +++ b/src/dbwrapper.php @@ -1,6 +1,6 @@ "$database", - "UID" => "$user", - "PWD" => "$password" - ); - // Establishes the connection - $conn = sqlsrv_connect($server, $connectionOptions); - var_dump($conn); + "database" => "$database", + "uid" => "$user", + "pwd" => "$password" + ); + $conn = sqlsrv_connect($serverName, $connectionOptions); if ($conn === false) { throwExceptionDBConn(var_dump(sqlsrv_errors())); } $return[0] = $conn; - $return[1] = "mssql"; - break; + $return[1] = "sqlsrv"; + break; default: return false; - break; + break; } return $return; } function throwExceptionDBConn($str = "") { - throw new Exception('Database connection error '); + throw new Exception('Database connection error '.$str); } /** Escapes conflictive chars for inserting into database */ function dbw_escape_string($conn,$string){ - switch ($conn[1]){ - case "mysqli": - return mysqli_escape_string($conn[0],$string); - case "sqlite": - return SQLite3::escapeString($string); - case "PgSQL": - return pg_escape_string($string); - case "mssql": - return $string; //Not implemented - } + switch ($conn[1]){ + case "mysqli": + return mysqli_escape_string($conn[0],$string); + case "sqlite": + return SQLite3::escapeString($string); + case "PgSQL": + return pg_escape_string($string); + case "sqlsrv": + return str_replace( "'", "''", $string ); //There is not a func for sqlsrv.. + } } @@ -83,9 +84,10 @@ function dbw_query($conn,$query){ case "PgSQL": $ret = pg_query($query); break; - case "mssql": - $ret = sqlsrv_query($conn, $query); + case "sqlsrv": + $ret = sqlsrv_query($conn[0],$query); break; + } //echo "

".$query."->".(microtime(true)-$time)." milisegundos

"; return $ret; @@ -110,10 +112,10 @@ function dbw_fetch_array($conn,$result,$typearray = NULL){ if ($typearray == "ASSOC"){return pg_fetch_array($result,NULL,PGSQL_ASSOC);} if ($typearray == "NUM"){return pg_fetch_array($result,NULL,PGSQL_NUM);} break; - case "mssql": - if ($typearray == NULL || $typearray == "BOTH"){return sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH);} - if ($typearray == "ASSOC"){return sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC);} - if ($typearray == "NUM"){return sqlsrv_fetch_array($result, SQLSRV_FETCH_NUM);} + case "sqlsrv": + if ($typearray == NULL || $typearray == "BOTH"){return sqlsrv_fetch_array($result,SQLSRV_FETCH_BOTH);} + if ($typearray == "ASSOC"){return sqlsrv_fetch_array($result,NULL,SQLSRV_FETCH_ASSOC);} + if ($typearray == "NUM"){return sqlsrv_fetch_array($result,NULL,SQLSRV_FETCH_NUMERIC);} break; } } @@ -124,44 +126,51 @@ function dbw_fetch_all($conn,$result,$typearray = NULL){ $ret=null; switch ($conn[1]){ case "mysqli": - if ($typearray == NULL || $typearray == "BOTH"){return mysqli_fetch_all($result,MYSQLI_BOTH);} - if ($typearray == "ASSOC"){return mysqli_fetch_all($result,MYSQLI_ASSOC);} - if ($typearray == "NUM"){return mysqli_fetch_all($result,MYSQLI_NUM);} + if ($typearray == NULL || $typearray == "BOTH"){$ret = mysqli_fetch_all($result,MYSQLI_BOTH);} + if ($typearray == "ASSOC"){$ret = mysqli_fetch_all($result,MYSQLI_ASSOC);} + if ($typearray == "NUM"){$ret = mysqli_fetch_all($result,MYSQLI_NUM);} break; case "sqlite": $ret = array(); while ($row = $result->fetchArray()) { //There is not fetchAll in sqlite3, implement it $ret[] = ($row); } - return $ret; break; case "PgSQL": - return pg_fetch_all($result,PGSQL_ASSOC); + $ret = pg_fetch_all($result,PGSQL_ASSOC); break; - case "mssql": + case 'sqlsrv': $ret = array(); - while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) { //There is not fetchAll in mssql, implement it + if ($typearray == NULL || $typearray == "BOTH"){$a = SQLSRV_FETCH_BOTH;} + if ($typearray == NULL || $typearray == "ASSOC"){$a = SQLSRV_FETCH_ASSOC;} + if ($typearray == NULL || $typearray == "NUM"){$a = SQLSRV_FETCH_NUMERIC;} + while ($row = sqlsrv_fetch_array($result,$a)) { $ret[] = ($row); } - return $ret; break; } //echo "

".$query."->".(microtime(true)-$time)." milisegundos

"; + return $ret; } /** Make query and fetch array (For one result) */ function dbw_query_fetch_array($conn,$query,$typearray = NULL){ $time = microtime(true); + $ret=null; $result = dbw_query($conn,$query); - return dbw_fetch_array($conn,$result,$typearray); + $ret = dbw_fetch_array($conn,$result,$typearray); + //echo "

".$query."->".(microtime(true)-$time)." milisegundos

"; + return $ret; } /** Make query and fetch all in a array */ function dbw_query_fetch_all($conn,$query,$typearray = NULL){ $time = microtime(true); + $ret=null; $result = dbw_query($conn,$query); - return dbw_fetch_all($conn,$result,$typearray); + $ret = dbw_fetch_all($conn,$result,$typearray); //echo "

".$query."->".(microtime(true)-$time)." milisegundos

"; + return $ret; } @@ -170,19 +179,20 @@ function dbw_query_goto($conn,$result,$row = 0){ switch ($conn[1]){ case "mysqli": mysqli_data_seek($result,$row); - break; + break; case "sqlite": $result->reset(); $count = 0; while ($count != $row){ $result->fetchArray(); } - break; + break; case "PgSQL": pg_result_seek($result, $row); - break; - case "mssql": - return sqlsrv_fetch($result,SQLSRV_SCROLL_ABSOLUTE,$row); + break; + case "sqlsrv": + sqlsrv_fetch($result,SQLSRV_SCROLL_ABSOLUTE,$row); + break; } } @@ -196,17 +206,17 @@ function dbw_multi_query($conn,$query,$erasebuffer = 0){ if ($erasebuffer){ while(mysqli_next_result($conn[0])){;} //Erase multiquery output for avoid error in next query } - break; + break; case "sqlite": $conn[0]->exec($query); - break; + break; case "PgSQL": $null = pg_query($query); - break; - case "mssql": - //Not implemented - throw new Exception('Not supported by MSSQL directly'); - break; + break; + case "sqlsrv": //Returns TRUE/FALSE + $ret = sqlsrv_prepare($conn[0],$query); + $null = sqlsrv_execute($ret); + break; } } @@ -219,10 +229,8 @@ function dbw_last_id($conn){ return $conn[0]->lastInsertRowID(); case "PgSQL": return pg_fetch_array(pg_query("SELECT lastval();"))[0]; - case "mssql": - //Not implemented - throw new Exception('Not supported by MSSQL directly'); - break; + case "sqlsrv": + return die("Error, not implemented"); } } @@ -243,23 +251,24 @@ function dbw_num_rows($conn,$result){ return $count; case "PgSQL": return pg_num_rows ($result); - case "mssql": - return sqlsrv_num_rows ($result); + case "sqlsrv": + return sqlsrv_num_rows($result); + } } /** Escapes conflictive chars for inserting into database */ function dbw_free_result($conn,$result){ - switch ($conn[1]){ - case "mysqli": - return mysqli_free_result($string); - case "sqlite": - return NULL; //Not neccesary I think - case "PgSQL": - return NULL; //¿? - case "msqql": - return sqlsrv_free_result($result); - } + switch ($conn[1]){ + case "mysqli": + return mysqli_free_result($string); + case "sqlite": + return NULL; //Not neccesary I think + case "PgSQL": + return NULL; //¿? + case "sqlsrv": + return sqlsrv_free_stmt($result); + } } @@ -268,15 +277,16 @@ function dbw_close($conn){ switch ($conn[1]){ case "mysqli": mysqli_close($conn[0]); - break; + break; case "sqlite": $conn[0]->close(); - break; + break; case "PgSQL": pg_close($conn[0]); - break; - case "mssql": + break; + case "sqlsrv": sqlsrv_close($conn[0]); + break; } } @@ -284,6 +294,7 @@ function dbw_close($conn){ function dbw_fetch_assoc($conn,$result){return dbw_fetch_array($conn,$result,"ASSOC");} function dbw_fetch_row($conn,$result){return dbw_fetch_array($conn,$result,"NUM");} +function dbw_query_fetch_one($conn,$query,$typearray = NULL){return dbw_query_fetch_array($conn,$query,$typearray);} function dbw_data_seek($conn,$result){return dbw_query_goto($conn,$result,$row = 0);} function dbw_result_seek($conn,$result){return dbw_query_goto($conn,$result,$row = 0);}