Changeset:
d4316bea4fb8
https://sourceforge.net/p/mrbs/hg-code/ci/d4316bea4fb875e08ddb59dca9b10ce8e963f4d3
Author:
John Beranek <[email protected]>
Date:
Sat Sep 17 16:03:54 2016 +0100
Log message:
pgsql abtraction updated to PDO
diffstat:
web/pgsql.inc | 157 +++++++++++++++++++++++++++++++--------------------------
1 files changed, 84 insertions(+), 73 deletions(-)
diffs (truncated from 393 to 300 lines):
diff -r aeb55a1aa62f -r d4316bea4fb8 web/pgsql.inc
--- a/web/pgsql.inc Sat Sep 17 13:34:45 2016 +0100
+++ b/web/pgsql.inc Sat Sep 17 16:03:54 2016 +0100
@@ -1,6 +1,8 @@
<?php
namespace MRBS;
+use PDO;
+
// $Id$
// pgsql.inc - Simple PHP database support for PostgreSQL.
@@ -57,11 +59,11 @@
// Free a results handle. You need not call this if you call sql_row or
// sql_row_keyed until the row returns 0, since sql_row frees the results
// handle when you finish reading the rows.
-function sql_pgsql_free ($r, $db_conn = null)
+function sql_pgsql_free ($sth, $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
- pg_free_result($r);
+ unset($sth);
}
@@ -70,14 +72,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- if (function_exists('pg_escape_string'))
- {
- return pg_escape_string($db_conn, $str);
- }
- else
- {
- return addslashes($str);
- }
+ return addslashes($str);
}
@@ -105,19 +100,21 @@
// Execute a non-SELECT SQL command (insert/update/delete).
// Returns the number of tuples affected if OK (a number >= 0).
// Returns -1 on error; use sql_error to get the error message.
-function sql_pgsql_command ($sql, $db_conn = null)
+function sql_pgsql_command ($sql, $params = array(), $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
$e = error_reporting(E_ALL & ~(E_WARNING|E_NOTICE));
- $r = pg_query($db_conn, $sql);
+
+ $sth = $db_conn->prepare($sql);
+ $sth->execute($params);
error_reporting($e);
- if (! $r)
+ if (! $sth)
{
return -1;
}
- $n = pg_affected_rows($r);
- pg_free_result($r);
+ $n = $sth->rowCount();
+
return $n;
}
@@ -128,26 +125,34 @@
// exactly one value, so error checking is somewhat limited.
// It also returns -1 if the query returns a single NULL value, such as from
// a MIN or MAX aggregate function applied over no rows.
-function sql_pgsql_query1 ($sql, $db_conn = null)
+function sql_pgsql_query1 ($sql, $params = array(), $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
$e = error_reporting(E_ALL & ~(E_WARNING|E_NOTICE));
- $r = pg_query($db_conn, $sql);
+
+ $sth = $db_conn->prepare($sql);
+ $sth->execute($params);
error_reporting($e);
- if (!$r)
+ if (!$sth)
{
trigger_error (sql_pgsql_error($db_conn), E_USER_WARNING);
return -1;
}
- if (pg_num_rows($r) != 1 || pg_num_fields($r) != 1
- || ($result = pg_fetch_result($r, 0, 0)) == "")
+ // Default to returning an error
+ $result = -1;
+
+ if (($sth->rowCount() == 1) &&
+ ($sth->columnCount() == 1))
{
- $result = -1;
+ $row = $sth->fetch(PDO::FETCH_NUM);
+ if ($row != NULL)
+ {
+ $result = $row[0];
+ }
}
- pg_free_result($r);
return $result;
}
@@ -155,14 +160,16 @@
// Execute an SQL query. Returns a database-dependent result handle,
// which should be passed back to sql_row or sql_row_keyed to get the results.
// Returns FALSE on error; use sql_error to get the error message.
-function sql_pgsql_query ($sql, $db_conn = null)
+function sql_pgsql_query ($sql, $params = array(), $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
$e = error_reporting(E_ALL & ~(E_WARNING|E_NOTICE));
- $r = pg_query($db_conn, $sql);
+
+ $sth = $db_conn->prepare($sql);
+ $sth->execute($params);
error_reporting($e);
- return $r;
+ return $sth;
}
@@ -171,16 +178,16 @@
// When called with i >= number of rows in the result, cleans up from
// the query and returns 0.
// Typical usage: $i = 0; while ((a = sql_row($r, $i++))) { ... }
-function sql_pgsql_row ($r, $i, $db_conn = null)
+function sql_pgsql_row ($sth, $i, $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
- if ($i >= pg_num_rows($r))
+ if ($i >= $sth->rowCount())
{
- pg_free_result($r);
+ unset($sth);
return 0;
}
- return pg_fetch_row($r, $i);
+ return $sth->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_ABS, $i);
}
@@ -190,27 +197,25 @@
// routing also stores the data under number indexes.
// When called with i >= number of rows in the result, cleans up from
// the query and returns 0.
-function sql_pgsql_row_keyed ($r, $i, $db_conn = null)
+function sql_pgsql_row_keyed ($sth, $i, $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
- if ($i >= pg_num_rows($r))
+ if ($i >= $sth->rowCount())
{
- pg_free_result($r);
+ unset($sth);
return 0;
}
- // Use _array() rather _assoc() to ensure support
- // for as many PHP versions as possible
- return pg_fetch_array($r, $i, PGSQL_ASSOC);
+ return $sth->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $i);
}
// Return the number of rows returned by a result handle from sql_query.
-function sql_pgsql_count ($r, $db_conn = null)
+function sql_pgsql_count ($sth, $db_conn = null)
{
sql_pgsql_ensure_handle($db_conn);
- return pg_num_rows($r);
+ return $sth->rowCount();
}
@@ -221,7 +226,7 @@
sql_pgsql_ensure_handle($db_conn);
$seq_name = $table . "_" . $field . "_seq";
- return sql_pgsql_query1("select last_value from $seq_name", $db_conn);
+ return $db_conn->lastInsertId($seq_name);
}
@@ -230,7 +235,9 @@
{
sql_pgsql_ensure_handle($db_conn);
- return pg_last_error($db_conn);
+ $error_info = $db_conn->errorInfo();
+
+ return $error_info[2];
}
@@ -240,7 +247,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- $result = sql_pgsql_command("BEGIN", $db_conn);
+ $result = sql_pgsql_command("BEGIN", array(), $db_conn);
if ($result < 0)
{
@@ -254,7 +261,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- $result = sql_pgsql_command("COMMIT", $db_conn);
+ $result = sql_pgsql_command("COMMIT", array(), $db_conn);
if ($result < 0)
{
@@ -268,7 +275,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- $result = sql_pgsql_command("ROLLBACK", $db_conn);
+ $result = sql_pgsql_command("ROLLBACK", array(), $db_conn);
if ($result < 0)
{
@@ -294,8 +301,8 @@
sql_pgsql_ensure_handle($db_conn);
global $sql_pgsql_mutex_unlock_name;
- if ((sql_pgsql_command("BEGIN", $db_conn) < 0) ||
- (sql_pgsql_command("LOCK TABLE $name IN EXCLUSIVE MODE", $db_conn) < 0))
+ if ((sql_pgsql_command("BEGIN", array(), $db_conn) < 0) ||
+ (sql_pgsql_command("LOCK TABLE $name IN EXCLUSIVE MODE", array(),
$db_conn) < 0))
{
return 0;
}
@@ -313,7 +320,7 @@
sql_pgsql_ensure_handle($db_conn);
global $sql_pgsql_mutex_unlock_name;
- sql_pgsql_command("COMMIT", $db_conn);
+ sql_pgsql_command("COMMIT", array(), $db_conn);
$sql_pgsql_mutex_unlock_name = NULL;
}
@@ -323,10 +330,14 @@
{
global $sql_pgsql_mutex_unlock_name;
+ if (!$db_conn)
+ {
+ return;
+ }
// Release any forgotten locks
if (!empty($sql_pgsql_mutex_unlock_name))
{
- sql_pgsql_command("ABORT", $db_conn);
+ sql_pgsql_command("ABORT", array(), $db_conn);
$sql_pgsql_mutex_unlock_name = NULL;
}
@@ -340,7 +351,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- $r = sql_pgsql_query("select version()", $db_conn);
+ $r = sql_pgsql_query("select version()", array(), $db_conn);
$v = sql_pgsql_row($r, 0, $db_conn);
sql_pgsql_free($r, $db_conn);
@@ -374,7 +385,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- return " " . sql_pgsql_quote($fieldname) . "='" . sql_pgsql_escape($s) . "'";
+ return " " . sql_pgsql_quote($fieldname) . "=?";
}
@@ -454,7 +465,7 @@
{
sql_pgsql_ensure_handle($db_conn);
- return pg_num_fields($result);
+ return $result->columnCount();
}
@@ -467,17 +478,20 @@
// parts, the schema and table names
$table_parts = sql_pgsql_resolve_table($table);
------------------------------------------------------------------------------
_______________________________________________
Mrbs-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mrbs-commits