7 Commits

Author SHA1 Message Date
e2f29f0f23 Update composer.json 2022-02-28 09:04:00 +00:00
9dff2902e2 Update README.md 2022-02-28 09:03:33 +00:00
abdfb36161 Update dbwrapper.php
Finish mssql add, now is stable
2022-02-28 09:02:27 +00:00
21f7a18add Update README.md 2021-03-23 13:14:17 +00:00
bf4d058146 Update dbwrapper.php 1.7 (Alpha MSSQL) 2021-03-23 13:12:51 +00:00
eb09b128eb Update README.md Version 1.6 2020-05-11 17:26:16 +00:00
e33b7b1ac3 Update dbwrapper.php
Version 1.6 - New fetchAll functions
2020-05-11 17:23:57 +00:00
3 changed files with 130 additions and 52 deletions

View File

@@ -1,4 +1,4 @@
# DBWrapper - Version 1.5.1 # DBWrapper - Version 2.0.1
This script is a simple wrapper for SQLite3, MySQL and PgSQL, for make possible to use different BD systems without changing the functions. This script is a simple wrapper for SQLite3, MySQL and PgSQL, for make possible to use different BD systems without changing the functions.
@@ -6,7 +6,7 @@ This script is a simple wrapper for SQLite3, MySQL and PgSQL, for make possible
In composer: In composer:
```bash ```bash
composer require jkanetwork/dbwrapper "~1.5.1" composer require jkanetwork/dbwrapper "~2.0.1"
``` ```
By hand: Download the php file inside src folder By hand: Download the php file inside src folder
@@ -33,8 +33,11 @@ By hand: Download the php file inside src folder
resource dbw_query (resource $conn, string $query); resource dbw_query (resource $conn, string $query);
//This does a (non interactive) multiquery. Its used for load from a file/script for example. //This does a (non interactive) multiquery. Its used for load from a file/script for example.
bool dbw_multi_query(resource $conn, string $multiquery); bool dbw_multi_query(resource $conn, string $multiquery);
//This do a query and fetch array, all in one function($typearray optional, see below) //This do a query and fetch array (One restult), all in one function($typearray optional, see below)
resource dbw_query_fetch_array (resource $conn,string $query[, string $typearray]); resource dbw_query_fetch_array (resource $conn,string $query[, string $typearray]);
//Return query as array (All results), all in one function($typearray optional, see below)
resource dbw_query_fetch_all (resource $conn,string $query[, string $typearray]);
//dbw_fetch_all is too for queries)
``` ```
* Using result of a query * Using result of a query
@@ -71,6 +74,7 @@ By hand: Download the php file inside src folder
-mysql/mysqli -> MySQL or MariaDB -mysql/mysqli -> MySQL or MariaDB
-sqlite/sqlite3 -> Sqlite3 -sqlite/sqlite3 -> Sqlite3
-PostgreSQL/PgSQL/pg -> PostgreSQL -PostgreSQL/PgSQL/pg -> PostgreSQL
-mssql/sqlsrv -> Microsoft SQL Server (Needs sqlsrv lib installed)
$conn is the connection stablished in dbw_connect (ie. $conn = dbw_connect('sqlite','file.sqlite')) $conn is the connection stablished in dbw_connect (ie. $conn = dbw_connect('sqlite','file.sqlite'))

View File

@@ -5,7 +5,7 @@
"keywords": ["mysql", "PgSQL", "sqlite", "wrapper"], "keywords": ["mysql", "PgSQL", "sqlite", "wrapper"],
"license": "Apache-2.0", "license": "Apache-2.0",
"authors": [ "authors": [
{"name": "Kevin Puertas Ruiz", "email": "kevin01010@gmail.com"} {"name": "Kevin Puertas Ruiz", "email": "kevinpr@jkanetwork.com"}
], ],
"require": { "require": {
"php": "^7.0" "php": "^7.0"

View File

@@ -1,6 +1,6 @@
<?php <?php
/* DBWrapper.php - Version 1.5 /* DBWrapper.php - Version 2.01
This script is a simple wrapper for SQLite3, MySQL and PgSQL, 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 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
@@ -8,47 +8,65 @@
/** Connect with database */ /** 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; $return = null;
switch ($tdb){ switch ($tdb){
case "mysql": case "mysql":
case "mysqli": case "mysqli":
$return[0] = mysqli_connect($server,$user,$password,$database) or throwExceptionDBConn(); $return[0] = mysqli_connect($server,$user,$password,$database) or throwExceptionDBConn();
$return[1] = "mysqli"; //Return standard mysqli for other funcs. $return[1] = "mysqli"; //Return standard mysqli for other funcs.
break; break;
case "sqlite": case "sqlite":
case "sqlite3": case "sqlite3":
$return[0] = new SQLite3($server); $return[0] = new SQLite3($server);
if (!$return[0]) throwExceptionDBConn(); if (!$return[0]) throwExceptionDBConn();
$return[1] = "sqlite"; //Return standard SQLite3 for other funcs. $return[1] = "sqlite"; //Return standard SQLite3 for other funcs.
break; break;
case "PostgreSQL": case "PostgreSQL":
case "pg": case "pg":
case "PgSQL": case "PgSQL":
$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": //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"
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
throwExceptionDBConn(var_dump(sqlsrv_errors()));
}
$return[0] = $conn;
$return[1] = "sqlsrv";
break;
default: default:
return false; return false;
break; break;
} }
return $return; return $return;
} }
function throwExceptionDBConn() { function throwExceptionDBConn($str = "") {
throw new Exception('Database connection error'); throw new Exception('Database connection error '.$str);
} }
/** Escapes conflictive chars for inserting into database */ /** Escapes conflictive chars for inserting into database */
function dbw_escape_string($conn,$string){ function dbw_escape_string($conn,$string){
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
return mysqli_escape_string($conn[0],$string); return mysqli_escape_string($conn[0],$string);
case "sqlite": case "sqlite":
return SQLite3::escapeString($string); return SQLite3::escapeString($string);
case "PgSQL": case "PgSQL":
return pg_escape_string($string); return pg_escape_string($string);
} case "sqlsrv":
return str_replace( "'", "''", $string ); //There is not a func for sqlsrv..
}
} }
@@ -66,17 +84,21 @@ function dbw_query($conn,$query){
case "PgSQL": case "PgSQL":
$ret = pg_query($query); $ret = pg_query($query);
break; break;
case "sqlsrv":
$ret = sqlsrv_query($conn[0],$query);
break;
} }
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>"; //echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret; return $ret;
} }
/** Fetch array from query */ /** Fetch array from query (Next result) */
function dbw_fetch_array($conn,$result,$typearray = NULL){ function dbw_fetch_array($conn,$result,$typearray = NULL){
if ($result == false || $result == NULL){return false;} if ($result == false || $result == NULL){return false;}
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
if ($typearray == NULL || $typearray == "BOTH"){return mysqli_fetch_array($result);} if ($typearray == NULL || $typearray == "BOTH"){return mysqli_fetch_array($result,MYSQLI_BOTH);}
if ($typearray == "ASSOC"){return mysqli_fetch_array($result,MYSQLI_ASSOC);} if ($typearray == "ASSOC"){return mysqli_fetch_array($result,MYSQLI_ASSOC);}
if ($typearray == "NUM"){return mysqli_fetch_array($result,MYSQLI_NUM);} if ($typearray == "NUM"){return mysqli_fetch_array($result,MYSQLI_NUM);}
break; break;
@@ -90,50 +112,87 @@ 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 "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;
} }
} }
/** Make query and fetch array */ /** Make query and fetch all in a array */
function dbw_query_fetch_array($conn,$query){ function dbw_fetch_all($conn,$result,$typearray = NULL){
$time = microtime(true); $time = microtime(true);
$ret=null; $ret=null;
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
$result = mysqli_query($conn[0],$query); if ($typearray == NULL || $typearray == "BOTH"){$ret = mysqli_fetch_all($result,MYSQLI_BOTH);}
if (!$result){return false;} if ($typearray == "ASSOC"){$ret = mysqli_fetch_all($result,MYSQLI_ASSOC);}
$ret = mysqli_fetch_array($result); if ($typearray == "NUM"){$ret = mysqli_fetch_all($result,MYSQLI_NUM);}
break; break;
case "sqlite": case "sqlite":
$result = $conn[0]->query($query); $ret = array();
if (!$result){return false;} while ($row = $result->fetchArray()) { //There is not fetchAll in sqlite3, implement it
$ret = $result->fetchArray(); $ret[] = ($row);
}
break; break;
case "PgSQL": case "PgSQL":
$result = pg_query($query); $ret = pg_fetch_all($result,PGSQL_ASSOC);
if (!$result){return false;} break;
$ret = pg_fetch_array($result); case 'sqlsrv':
$ret = array();
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);
}
break; break;
} }
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>"; //echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret; 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);
$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);
$ret = dbw_fetch_all($conn,$result,$typearray);
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret;
}
/** Goes a query to $row. $row starts in 0 as first row as if not specified */ /** Goes a query to $row. $row starts in 0 as first row as if not specified */
function dbw_query_goto($conn,$result,$row = 0){ function dbw_query_goto($conn,$result,$row = 0){
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
mysqli_data_seek($result,$row); mysqli_data_seek($result,$row);
break; break;
case "sqlite": case "sqlite":
$result->reset(); $result->reset();
$count = 0; $count = 0;
while ($count != $row){ while ($count != $row){
$result->fetchArray(); $result->fetchArray();
} }
break; break;
case "PgSQL": case "PgSQL":
pg_result_seek($result, $row); pg_result_seek($result, $row);
break; break;
case "sqlsrv":
sqlsrv_fetch($result,SQLSRV_SCROLL_ABSOLUTE,$row);
break;
} }
} }
@@ -147,13 +206,17 @@ function dbw_multi_query($conn,$query,$erasebuffer = 0){
if ($erasebuffer){ if ($erasebuffer){
while(mysqli_next_result($conn[0])){;} //Erase multiquery output for avoid error in next query while(mysqli_next_result($conn[0])){;} //Erase multiquery output for avoid error in next query
} }
break; break;
case "sqlite": case "sqlite":
$conn[0]->exec($query); $conn[0]->exec($query);
break; break;
case "PgSQL": case "PgSQL":
$null = pg_query($query); $null = pg_query($query);
break; break;
case "sqlsrv": //Returns TRUE/FALSE
$ret = sqlsrv_prepare($conn[0],$query);
$null = sqlsrv_execute($ret);
break;
} }
} }
@@ -166,6 +229,8 @@ 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 "sqlsrv":
return die("Error, not implemented");
} }
} }
@@ -186,19 +251,24 @@ 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 "sqlsrv":
return sqlsrv_num_rows($result);
} }
} }
/** Escapes conflictive chars for inserting into database */ /** Escapes conflictive chars for inserting into database */
function dbw_free_result($conn,$result){ function dbw_free_result($conn,$result){
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
return mysqli_free_result($string); return mysqli_free_result($string);
case "sqlite": case "sqlite":
return NULL; //Not neccesary I think return NULL; //Not neccesary I think
case "PgSQL": case "PgSQL":
return NULL; //¿? return NULL; //¿?
} case "sqlsrv":
return sqlsrv_free_stmt($result);
}
} }
@@ -207,13 +277,16 @@ function dbw_close($conn){
switch ($conn[1]){ switch ($conn[1]){
case "mysqli": case "mysqli":
mysqli_close($conn[0]); mysqli_close($conn[0]);
break; break;
case "sqlite": case "sqlite":
$conn[0]->close(); $conn[0]->close();
break; break;
case "PgSQL": case "PgSQL":
pg_close($conn[0]); pg_close($conn[0]);
break; break;
case "sqlsrv":
sqlsrv_close($conn[0]);
break;
} }
} }
@@ -221,6 +294,7 @@ function dbw_close($conn){
function dbw_fetch_assoc($conn,$result){return dbw_fetch_array($conn,$result,"ASSOC");} 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_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_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);} function dbw_result_seek($conn,$result){return dbw_query_goto($conn,$result,$row = 0);}