mirror of
https://gitlab.com/CodeSolutionsProject/DBWrapper.git
synced 2026-02-13 16:41:32 +01:00
Update dbwrapper.php
Finish mssql add, now is stable
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* DBWrapper.php - Version 1.7
|
||||
This script is a simple wrapper for SQLite3, MySQL, PgSQL and MSSQL (Alpha),
|
||||
/* DBWrapper.php - Version 2.01
|
||||
This script is a simple wrapper for SQLite3, MySQL, PgSQL and MSSQL (sqlsrv),
|
||||
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)
|
||||
Read README.md for details of every function and use
|
||||
@@ -8,64 +8,65 @@
|
||||
|
||||
|
||||
/** Connect with database */
|
||||
function dbw_connect($tdb,$server,$database=NULL,$user = NULL,$password=NULL){
|
||||
function dbw_connect($tdb,$server,$database=NULL,$user = NULL,$password=NULL){ //Instance has to be \X,PORT for MSSQL
|
||||
$return = null;
|
||||
switch ($tdb){
|
||||
case "mysql":
|
||||
case "mysqli":
|
||||
$return[0] = mysqli_connect($server,$user,$password,$database) or throwExceptionDBConn();
|
||||
$return[1] = "mysqli"; //Return standard mysqli for other funcs.
|
||||
break;
|
||||
break;
|
||||
case "sqlite":
|
||||
case "sqlite3":
|
||||
$return[0] = new SQLite3($server);
|
||||
if (!$return[0]) throwExceptionDBConn();
|
||||
$return[1] = "sqlite"; //Return standard SQLite3 for other funcs.
|
||||
break;
|
||||
break;
|
||||
case "PostgreSQL":
|
||||
case "pg":
|
||||
case "PgSQL":
|
||||
$return[0] = pg_connect("host=$server dbname=$database user=$user password=$password") or throwExceptionDBConn();
|
||||
$return[1] = "PgSQL"; //Return standard PgSQL for other funcs.
|
||||
break;
|
||||
case 'mssql':
|
||||
break;
|
||||
case "mssql": //MSSQL using sqlsrv
|
||||
case "SQLSRV":
|
||||
case "sqlsrv":
|
||||
$serverName = "$server"; //If instance and port , has to be IP\INSTANCE:PORT
|
||||
$connectionOptions = array(
|
||||
"Database" => "$database",
|
||||
"UID" => "$user",
|
||||
"PWD" => "$password"
|
||||
"database" => "$database",
|
||||
"uid" => "$user",
|
||||
"pwd" => "$password"
|
||||
);
|
||||
// Establishes the connection
|
||||
$conn = sqlsrv_connect($server, $connectionOptions);
|
||||
var_dump($conn);
|
||||
$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 "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
|
||||
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 "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
|
||||
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 "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
|
||||
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 "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
|
||||
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);}
|
||||
|
||||
Reference in New Issue
Block a user