Update dbwrapper.php 1.7 (Alpha MSSQL)

This commit is contained in:
2021-03-23 13:12:51 +00:00
parent eb09b128eb
commit bf4d058146

View File

@@ -1,6 +1,6 @@
<?php <?php
/* DBWrapper.php - Version 1.6 /* DBWrapper.php - Version 1.7
This script is a simple wrapper for SQLite3, MySQL and PgSQL, This script is a simple wrapper for SQLite3, MySQL, PgSQL and MSSQL (Alpha),
for make possible to use different BD systems without changing the functions. for make possible to use different BD systems without changing the functions.
For use, in dbw_connect you have to specify type of database (see below) For use, in dbw_connect you have to specify type of database (see below)
Read README.md for details of every function and use Read README.md for details of every function and use
@@ -28,6 +28,21 @@ function dbw_connect($tdb,$server,$database=NULL,$user = NULL,$password=NULL){
$return[0] = pg_connect("host=$server dbname=$database user=$user password=$password") or throwExceptionDBConn(); $return[0] = pg_connect("host=$server dbname=$database user=$user password=$password") or throwExceptionDBConn();
$return[1] = "PgSQL"; //Return standard PgSQL for other funcs. $return[1] = "PgSQL"; //Return standard PgSQL for other funcs.
break; break;
case 'mssql':
$connectionOptions = array(
"Database" => "$database",
"UID" => "$user",
"PWD" => "$password"
);
// Establishes the connection
$conn = sqlsrv_connect($server, $connectionOptions);
var_dump($conn);
if ($conn === false) {
throwExceptionDBConn(var_dump(sqlsrv_errors()));
}
$return[0] = $conn;
$return[1] = "mssql";
break;
default: default:
return false; return false;
break; break;
@@ -35,8 +50,8 @@ function dbw_connect($tdb,$server,$database=NULL,$user = NULL,$password=NULL){
return $return; return $return;
} }
function throwExceptionDBConn() { function throwExceptionDBConn($str = "") {
throw new Exception('Database connection error'); throw new Exception('Database connection error ');
} }
/** Escapes conflictive chars for inserting into database */ /** Escapes conflictive chars for inserting into database */
@@ -48,6 +63,8 @@ function dbw_escape_string($conn,$string){
return SQLite3::escapeString($string); return SQLite3::escapeString($string);
case "PgSQL": case "PgSQL":
return pg_escape_string($string); return pg_escape_string($string);
case "mssql":
return $string; //Not implemented
} }
} }
@@ -66,6 +83,9 @@ function dbw_query($conn,$query){
case "PgSQL": case "PgSQL":
$ret = pg_query($query); $ret = pg_query($query);
break; break;
case "mssql":
$ret = sqlsrv_query($conn, $query);
break;
} }
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>"; //echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret; return $ret;
@@ -90,6 +110,11 @@ function dbw_fetch_array($conn,$result,$typearray = NULL){
if ($typearray == "ASSOC"){return pg_fetch_array($result,NULL,PGSQL_ASSOC);} if ($typearray == "ASSOC"){return pg_fetch_array($result,NULL,PGSQL_ASSOC);}
if ($typearray == "NUM"){return pg_fetch_array($result,NULL,PGSQL_NUM);} if ($typearray == "NUM"){return pg_fetch_array($result,NULL,PGSQL_NUM);}
break; 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);}
break;
} }
} }
@@ -99,79 +124,44 @@ function dbw_fetch_all($conn,$result,$typearray = NULL){
$ret=null; $ret=null;
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
if ($typearray == NULL || $typearray == "BOTH"){$ret = mysqli_fetch_all($result,MYSQLI_BOTH);} if ($typearray == NULL || $typearray == "BOTH"){return mysqli_fetch_all($result,MYSQLI_BOTH);}
if ($typearray == "ASSOC"){$ret = mysqli_fetch_all($result,MYSQLI_ASSOC);} if ($typearray == "ASSOC"){return mysqli_fetch_all($result,MYSQLI_ASSOC);}
if ($typearray == "NUM"){$ret = mysqli_fetch_all($result,MYSQLI_NUM);} if ($typearray == "NUM"){return mysqli_fetch_all($result,MYSQLI_NUM);}
break; break;
case "sqlite": case "sqlite":
$ret = array(); $ret = array();
while ($row = $result->fetchArray()) { //There is not fetchAll in sqlite3, implement it while ($row = $result->fetchArray()) { //There is not fetchAll in sqlite3, implement it
$ret[] = ($row); $ret[] = ($row);
} }
return $ret;
break; break;
case "PgSQL": case "PgSQL":
$ret = pg_fetch_all($result,PGSQL_ASSOC); return pg_fetch_all($result,PGSQL_ASSOC);
break;
case "mssql":
$ret = array();
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) { //There is not fetchAll in mssql, implement it
$ret[] = ($row);
}
return $ret;
break; break;
} }
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>"; //echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret;
} }
/** Make query and fetch array (For one result) */ /** Make query and fetch array (For one result) */
function dbw_query_fetch_array($conn,$query,$typearray = NULL){ function dbw_query_fetch_array($conn,$query,$typearray = NULL){
$time = microtime(true); $time = microtime(true);
$ret=null; $result = dbw_query($conn,$query);
switch ($conn[1]){ return dbw_fetch_array($conn,$result,$typearray);
case "mysqli":
$result = mysqli_query($conn[0],$query);
if (!$result){return false;}
if ($typearray == NULL || $typearray == "BOTH"){$ret = mysqli_fetch_array($result,MYSQLI_BOTH);}
if ($typearray == "ASSOC"){$ret = mysqli_fetch_array($result,MYSQLI_ASSOC);}
if ($typearray == "NUM"){$ret = mysqli_fetch_array($result,MYSQLI_NUM);}
break;
case "sqlite":
$result = $conn[0]->query($query);
if (!$result){return false;}
$ret = $result->fetchArray();
break;
case "PgSQL":
$result = pg_query($query);
if (!$result){return false;}
$ret = pg_fetch_array($result,PGSQL_ASSOC);
break;
}
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret;
} }
/** Make query and fetch all in a array */ /** Make query and fetch all in a array */
function dbw_query_fetch_all($conn,$query,$typearray = NULL){ function dbw_query_fetch_all($conn,$query,$typearray = NULL){
$time = microtime(true); $time = microtime(true);
$ret=null; $result = dbw_query($conn,$query);
switch ($conn[1]){ return dbw_fetch_all($conn,$result,$typearray);
case "mysqli":
$result = mysqli_query($conn[0],$query);
if (!$result){return false;}
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":
$result = $conn[0]->query($query);
if (!$result){return false;}
$ret = array();
while ($row = $result->fetchArray()) { //There is not fetchAll in sqlite3, implement it
$ret[] = ($row);
}
break;
case "PgSQL":
$result = pg_query($query);
if (!$result){return false;}
$ret = pg_fetch_all($result,PGSQL_ASSOC);
break;
}
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>"; //echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret;
} }
@@ -191,6 +181,8 @@ function dbw_query_goto($conn,$result,$row = 0){
case "PgSQL": case "PgSQL":
pg_result_seek($result, $row); pg_result_seek($result, $row);
break; break;
case "mssql":
return sqlsrv_fetch($result,SQLSRV_SCROLL_ABSOLUTE,$row);
} }
} }
@@ -211,6 +203,10 @@ function dbw_multi_query($conn,$query,$erasebuffer = 0){
case "PgSQL": case "PgSQL":
$null = pg_query($query); $null = pg_query($query);
break; break;
case "mssql":
//Not implemented
throw new Exception('Not supported by MSSQL directly');
break;
} }
} }
@@ -223,6 +219,10 @@ function dbw_last_id($conn){
return $conn[0]->lastInsertRowID(); return $conn[0]->lastInsertRowID();
case "PgSQL": case "PgSQL":
return pg_fetch_array(pg_query("SELECT lastval();"))[0]; return pg_fetch_array(pg_query("SELECT lastval();"))[0];
case "mssql":
//Not implemented
throw new Exception('Not supported by MSSQL directly');
break;
} }
} }
@@ -243,6 +243,8 @@ function dbw_num_rows($conn,$result){
return $count; return $count;
case "PgSQL": case "PgSQL":
return pg_num_rows ($result); return pg_num_rows ($result);
case "mssql":
return sqlsrv_num_rows ($result);
} }
} }
@@ -255,6 +257,8 @@ function dbw_free_result($conn,$result){
return NULL; //Not neccesary I think return NULL; //Not neccesary I think
case "PgSQL": case "PgSQL":
return NULL; //¿? return NULL; //¿?
case "msqql":
return sqlsrv_free_result($result);
} }
} }
@@ -271,6 +275,8 @@ function dbw_close($conn){
case "PgSQL": case "PgSQL":
pg_close($conn[0]); pg_close($conn[0]);
break; break;
case "mssql":
sqlsrv_close($conn[0]);
} }
} }