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.
@@ -6,7 +6,7 @@ This script is a simple wrapper for SQLite3, MySQL and PgSQL, for make possible
In composer:
```bash
composer require jkanetwork/dbwrapper "~1.5.1"
composer require jkanetwork/dbwrapper "~2.0.1"
```
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);
//This does a (non interactive) multiquery. Its used for load from a file/script for example.
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]);
//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
@@ -71,6 +74,7 @@ By hand: Download the php file inside src folder
-mysql/mysqli -> MySQL or MariaDB
-sqlite/sqlite3 -> Sqlite3
-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'))

View File

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

View File

@@ -1,6 +1,6 @@
<?php
/* DBWrapper.php - Version 1.5
This script is a simple wrapper for SQLite3, MySQL and PgSQL,
/* 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,47 +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;
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:
return false;
break;
break;
}
return $return;
}
function throwExceptionDBConn() {
throw new Exception('Database connection error');
function throwExceptionDBConn($str = "") {
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);
}
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..
}
}
@@ -66,17 +84,21 @@ function dbw_query($conn,$query){
case "PgSQL":
$ret = pg_query($query);
break;
case "sqlsrv":
$ret = sqlsrv_query($conn[0],$query);
break;
}
//echo "<p>".$query."->".(microtime(true)-$time)." milisegundos</p>";
return $ret;
}
/** Fetch array from query */
/** Fetch array from query (Next result) */
function dbw_fetch_array($conn,$result,$typearray = NULL){
if ($result == false || $result == NULL){return false;}
switch ($conn[1]){
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 == "NUM"){return mysqli_fetch_array($result,MYSQLI_NUM);}
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 == "NUM"){return pg_fetch_array($result,NULL,PGSQL_NUM);}
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 */
function dbw_query_fetch_array($conn,$query){
/** Make query and fetch all in a array */
function dbw_fetch_all($conn,$result,$typearray = NULL){
$time = microtime(true);
$ret=null;
switch ($conn[1]){
case "mysqli":
$result = mysqli_query($conn[0],$query);
if (!$result){return false;}
$ret = mysqli_fetch_array($result);
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 = $result->fetchArray();
$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_array($result);
$ret = pg_fetch_all($result,PGSQL_ASSOC);
break;
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;
}
//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);
$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 */
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;
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){
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;
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();
case "PgSQL":
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;
case "PgSQL":
return pg_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; //¿?
}
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);
}
}
@@ -207,13 +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;
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_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);}