The branch, master has been updated
       via  e82682d0e4037d92305ad92cb5514e822e9a5abc (commit)
       via  b9ff7b7ce279391e5a2538c182ee0419e3456fa3 (commit)
       via  f43517efb525b8e4cfc387822308c206f32ba6ee (commit)
       via  46cd0f9a09e3a3fd0f2bb3b9b018282390c4e813 (commit)
       via  b0ce7c20c4595a8a093177583cbdd5e15c6b6dca (commit)
       via  69ac50958439cc32f4fa313ebb096d90b3a10746 (commit)
       via  2141b5fe81d71d08524a11251a38fe5663b51ac7 (commit)
      from  f89a16ed81e111abd7cf55d506ec944b4697ba4e (commit)


- Log -----------------------------------------------------------------
commit e82682d0e4037d92305ad92cb5514e822e9a5abc
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 19:54:22 2011 +0200

    Simplify PMA_DBI_free_result
    It was never used with multiple arguments

commit b9ff7b7ce279391e5a2538c182ee0419e3456fa3
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 19:51:09 2011 +0200

    Support persistent connections with mysqli extension (only PHP 5.3.0 and 
newer)

commit f43517efb525b8e4cfc387822308c206f32ba6ee
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 19:37:51 2011 +0200

    mysql extension - remove 'persistent' parameter
    Was named 'persistant' and never used/documented

commit 46cd0f9a09e3a3fd0f2bb3b9b018282390c4e813
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 19:01:15 2011 +0200

    Comments

commit b0ce7c20c4595a8a093177583cbdd5e15c6b6dca
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 17:31:23 2011 +0200

    Improve readability

commit 69ac50958439cc32f4fa313ebb096d90b3a10746
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 17:25:20 2011 +0200

    This should be checked in common, not in dbi library

commit 2141b5fe81d71d08524a11251a38fe5663b51ac7
Author: Piotr Przybylski <[email protected]>
Date:   Wed Jul 27 17:20:14 2011 +0200

    Fix incorrect variable name
    persistant > persistent

-----------------------------------------------------------------------

Summary of changes:
 Documentation.html               |    8 ++-
 libraries/common.inc.php         |    5 ++
 libraries/dbi/mysql.dbi.lib.php  |   97 ++++++++++++++++++--------
 libraries/dbi/mysqli.dbi.lib.php |  139 ++++++++++++++++++++++----------------
 4 files changed, 160 insertions(+), 89 deletions(-)

diff --git a/Documentation.html b/Documentation.html
index 33bfa85..26673cb 100644
--- a/Documentation.html
+++ b/Documentation.html
@@ -1391,8 +1391,12 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre>
         is known to cause data corruption when having enabled buffering.</dd>
 
     <dt id="cfg_PersistentConnections">$cfg['PersistentConnections'] 
boolean</dt>
-    <dd>Whether persistent connections should be used or not (mysql_connect or
-        mysql_pconnect).</dd>
+    <dd>Whether <a 
href="http://php.net/manual/en/features.persistent-connections.php";>persistent 
connections</a>
+        should be used or not. Works with following extensions:
+        <ul>
+            <li>mysql (<a 
href="http://php.net/manual/en/function.mysql-pconnect.php";>mysql_pconnect</a>),</li>
+            <li>mysqli (requires PHP 5.3.0 or newer, <a 
href="http://php.net/manual/en/mysqli.persistconns.php";>more 
information</a>).</li>
+        </ul></dd>
 
     <dt id="cfg_ForceSSL">$cfg['ForceSSL'] boolean</dt>
     <dd>Whether to force using https while accessing phpMyAdmin.</dd>
diff --git a/libraries/common.inc.php b/libraries/common.inc.php
index 53cde17..2b2cf60 100644
--- a/libraries/common.inc.php
+++ b/libraries/common.inc.php
@@ -899,6 +899,11 @@ if (! defined('PMA_MINIMUM_COMMON')) {
             unset($login_without_password_is_forbidden); //Clean up after you!
         }
 
+        // if using TCP socket is not needed
+        if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
+            $cfg['Server']['socket'] = '';
+        }
+
         // Try to connect MySQL with the control user profile (will be used to
         // get the privileges list for the current user but the true user link
         // must be open after this one so it would be default one for all the
diff --git a/libraries/dbi/mysql.dbi.lib.php b/libraries/dbi/mysql.dbi.lib.php
index aa099eb..ed8a93a 100644
--- a/libraries/dbi/mysql.dbi.lib.php
+++ b/libraries/dbi/mysql.dbi.lib.php
@@ -20,18 +20,28 @@ if (! defined('PMA_MYSQL_CLIENT_API')) {
     unset($client_api);
 }
 
-function PMA_DBI_real_connect($server, $user, $password, $client_flags, 
$persistant=false)
+/**
+ * Helper function for connecting to the database server
+ *
+ * @param   string  $server
+ * @param   string  $user
+ * @param   string  $password
+ * @param   int     $client_flags
+ * @param   boolean $persistent
+ * @return  mixed   false on error or a mysql connection resource on success
+ */
+function PMA_DBI_real_connect($server, $user, $password, $client_flags, 
$persistent = false)
 {
     global $cfg;
 
     if (empty($client_flags)) {
-        if ($cfg['PersistentConnections'] || $persistant) {
+        if ($cfg['PersistentConnections'] || $persistent) {
             $link = @mysql_pconnect($server, $user, $password);
         } else {
             $link = @mysql_connect($server, $user, $password);
         }
     } else {
-        if ($cfg['PersistentConnections'] || $persistant) {
+        if ($cfg['PersistentConnections'] || $persistent) {
             $link = @mysql_pconnect($server, $user, $password, $client_flags);
         } else {
             $link = @mysql_connect($server, $user, $password, false, 
$client_flags);
@@ -40,11 +50,14 @@ function PMA_DBI_real_connect($server, $user, $password, 
$client_flags, $persist
 
     return $link;
 }
+
 /**
+ * connects to the database server
+ * 
  * @param   string  $user           mysql user name
  * @param   string  $password       mysql user password
  * @param   boolean $is_controluser
- * @param   array   $server host/port/socket/persistant
+ * @param   array   $server host/port/socket/persistent
  * @param   boolean $auxiliary_connection (when true, don't go back to login 
if connection fails)
  * @return  mixed   false on error or a mysqli object on success
  */
@@ -59,9 +72,6 @@ function PMA_DBI_connect($user, $password, $is_controluser = 
false, $server = nu
         $server_socket = (empty($server['socket']))
             ? ''
             : ':' . $server['socket'];
-        $server_persistant = (empty($server['persistant']))
-            ? false
-            : true;
     } else {
         $server_port   = (empty($cfg['Server']['port']))
             ? ''
@@ -71,10 +81,6 @@ function PMA_DBI_connect($user, $password, $is_controluser = 
false, $server = nu
             : ':' . $cfg['Server']['socket'];
     }
 
-    if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
-        $cfg['Server']['socket'] = '';
-    }
-
     $client_flags = 0;
 
     // always use CLIENT_LOCAL_FILES as defined in mysql_com.h
@@ -101,9 +107,9 @@ function PMA_DBI_connect($user, $password, $is_controluser 
= false, $server = nu
         }
     } else {
         if (!isset($server['host'])) {
-            $link = PMA_DBI_real_connect($server_socket, $user, $password, 
NULL, $server_persistant);
+            $link = PMA_DBI_real_connect($server_socket, $user, $password, 
NULL);
         } else {
-            $link = PMA_DBI_real_connect($server['host'] . $server_port . 
$server_socket, $user, $password, NULL, $server_persistant);
+            $link = PMA_DBI_real_connect($server['host'] . $server_port . 
$server_socket, $user, $password, NULL);
         }
     }
     if (empty($link)) {
@@ -128,11 +134,11 @@ function PMA_DBI_connect($user, $password, 
$is_controluser = false, $server = nu
 }
 
 /**
- * select a db
+ * selects given database
  *
- * @param string $dbname name of db to select
- * @param resource $link mysql link resource
- * @return boolean success
+ * @param string    $dbname  name of db to select
+ * @param resource  $link    mysql link resource
+ * @return boolean
  */
 function PMA_DBI_select_db($dbname, $link = null)
 {
@@ -149,9 +155,9 @@ function PMA_DBI_select_db($dbname, $link = null)
 /**
  * runs a query and returns the result
  *
- * @param string $query query to run
+ * @param string   $query query to run
  * @param resource $link mysql link resource
- * @param integer $options
+ * @param integer  $options
  * @return mixed
  */
 function PMA_DBI_real_query($query, $link, $options)
@@ -165,15 +171,33 @@ function PMA_DBI_real_query($query, $link, $options)
     }
 }
 
+/**
+ * returns array of rows with associative and numeric keys from $result
+ *
+ * @param   resource  $result
+ * @return  array
+ */
 function PMA_DBI_fetch_array($result)
 {
     return mysql_fetch_array($result, MYSQL_BOTH);
 }
 
+/**
+ * returns array of rows with associative keys from $result
+ *
+ * @param   resource  $result
+ * @return  array
+ */
 function PMA_DBI_fetch_assoc($result) {
     return mysql_fetch_array($result, MYSQL_ASSOC);
 }
 
+/**
+ * returns array of rows with numeric keys from $result
+ *
+ * @param   resource  $result
+ * @return  array
+ */
 function PMA_DBI_fetch_row($result)
 {
     return mysql_fetch_array($result, MYSQL_NUM);
@@ -192,17 +216,14 @@ function PMA_DBI_data_seek($result, $offset)
 }
 
 /**
- * Frees the memory associated with the results
+ * Frees memory associated with the result
  *
- * @param result    $result,...     one or more mysql result resources
+ * @param  resource  $result
  */
-function PMA_DBI_free_result()
+function PMA_DBI_free_result($result)
 {
-    foreach (func_get_args() as $result) {
-        if (is_resource($result)
-         && get_resource_type($result) === 'mysql result') {
-            mysql_free_result($result);
-        }
+    if (is_resource($result) && get_resource_type($result) === 'mysql result') 
{
+        mysql_free_result($result);
     }
 }
 
@@ -337,6 +358,12 @@ function PMA_DBI_getError($link = null)
     return $error;
 }
 
+/**
+ * returns the number of rows returned by last query
+ *
+ * @param   resource    $result
+ * @return  string|ineteger
+ */
 function PMA_DBI_num_rows($result)
 {
     if (!is_bool($result)) {
@@ -346,6 +373,12 @@ function PMA_DBI_num_rows($result)
     }
 }
 
+/**
+ * returns last inserted auto_increment id for given $link or 
$GLOBALS['userlink']
+ *
+ * @param   resource $link   the mysql object
+ * @return  string|ineteger
+ */
 function PMA_DBI_insert_id($link = null)
 {
     if (empty($link)) {
@@ -366,9 +399,9 @@ function PMA_DBI_insert_id($link = null)
 /**
  * returns the number of rows affected by last query
  *
- * @param   object mysql   $link   the mysql object
- * @param   boolean        $get_from_cache
- * @return  string integer
+ * @param   resource   $link   the mysql object
+ * @param   boolean    $get_from_cache
+ * @return  string|integer
  */
 function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
 {
@@ -388,7 +421,11 @@ function PMA_DBI_affected_rows($link = null, 
$get_from_cache = true)
 }
 
 /**
+ * returns metainfo for fields in $result
+ *
  * @todo add missing keys like in from mysqli_query (orgname, orgtable, flags, 
decimals)
+ * @param   resource    $result
+ * @return  array  meta info for fields in $result
  */
 function PMA_DBI_get_fields_meta($result)
 {
diff --git a/libraries/dbi/mysqli.dbi.lib.php b/libraries/dbi/mysqli.dbi.lib.php
index 0cd7c2f..535b825 100644
--- a/libraries/dbi/mysqli.dbi.lib.php
+++ b/libraries/dbi/mysqli.dbi.lib.php
@@ -44,6 +44,34 @@ if (! defined('MYSQLI_TYPE_BIT')) {
 }
 
 /**
+ * Helper function for connecting to the database server
+ *
+ * @param   mysqli  $link
+ * @param   string  $host
+ * @param   string  $user
+ * @param   string  $password
+ * @param   string  $dbname
+ * @param   int     $server_port
+ * @param   string  $server_socket
+ * @param   int     $client_flags
+ * @param   boolean $persistent
+ * @return  boolean
+ */
+function PMA_DBI_real_connect($link, $host, $user, $password, $dbname, 
$server_port, $server_socket, $client_flags = null, $persistent = false)
+{
+    global $cfg;
+
+    if ($cfg['PersistentConnections'] || $persistent) {
+        $host = 'p:' . $host;
+    }
+    if ($client_flags === null) {
+        return @mysqli_real_connect($link, $host, $user, $password, $dbname, 
$server_port, $server_socket);
+    } else {
+        return @mysqli_real_connect($link, $host, $user, $password, $dbname, 
$server_port, $server_socket, $client_flags);
+    }
+}
+
+/**
  * connects to the database server
  *
  * @param   string  $user           mysql user name
@@ -55,6 +83,8 @@ if (! defined('MYSQLI_TYPE_BIT')) {
  */
 function PMA_DBI_connect($user, $password, $is_controluser = false, $server = 
null, $auxiliary_connection = false)
 {
+    global $cfg;
+
     if ($server) {
         $server_port   = (empty($server['port']))
             ? false
@@ -66,17 +96,12 @@ function PMA_DBI_connect($user, $password, $is_controluser 
= false, $server = nu
             ? 'localhost'
             : $server['host'];
     } else {
-        $server_port   = (empty($GLOBALS['cfg']['Server']['port']))
+        $server_port   = (empty($cfg['Server']['port']))
             ? false
-            : (int) $GLOBALS['cfg']['Server']['port'];
-        $server_socket = (empty($GLOBALS['cfg']['Server']['socket']))
+            : (int) $cfg['Server']['port'];
+        $server_socket = (empty($cfg['Server']['socket']))
             ? null
-            : $GLOBALS['cfg']['Server']['socket'];
-    }
-
-
-    if (strtolower($GLOBALS['cfg']['Server']['connect_type']) == 'tcp') {
-        $GLOBALS['cfg']['Server']['socket'] = '';
+            : $cfg['Server']['socket'];
     }
 
     // NULL enables connection to the default socket
@@ -88,23 +113,23 @@ function PMA_DBI_connect($user, $password, $is_controluser 
= false, $server = nu
     $client_flags = 0;
 
     /* Optionally compress connection */
-    if ($GLOBALS['cfg']['Server']['compress'] && 
defined('MYSQLI_CLIENT_COMPRESS')) {
+    if ($cfg['Server']['compress'] && defined('MYSQLI_CLIENT_COMPRESS')) {
         $client_flags |= MYSQLI_CLIENT_COMPRESS;
     }
 
     /* Optionally enable SSL */
-    if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) {
+    if ($cfg['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) {
         $client_flags |= MYSQLI_CLIENT_SSL;
     }
 
     if (!$server) {
-        $return_value = @mysqli_real_connect($link, 
$GLOBALS['cfg']['Server']['host'], $user, $password, false, $server_port, 
$server_socket, $client_flags);
+        $return_value = @PMA_DBI_real_connect($link, $cfg['Server']['host'], 
$user, $password, false, $server_port, $server_socket, $client_flags);
         // Retry with empty password if we're allowed to
-        if ($return_value == false && 
isset($GLOBALS['cfg']['Server']['nopassword']) && 
$GLOBALS['cfg']['Server']['nopassword'] && !$is_controluser) {
-            $return_value = @mysqli_real_connect($link, 
$GLOBALS['cfg']['Server']['host'], $user, '', false, $server_port, 
$server_socket, $client_flags);
+        if ($return_value == false && isset($cfg['Server']['nopassword']) && 
$cfg['Server']['nopassword'] && !$is_controluser) {
+            $return_value = @PMA_DBI_real_connect($link, 
$cfg['Server']['host'], $user, '', false, $server_port, $server_socket, 
$client_flags);
         }
     } else {
-        $return_value = @mysqli_real_connect($link, $server['host'], $user, 
$password, false, $server_port, $server_socket);
+        $return_value = @PMA_DBI_real_connect($link, $server['host'], $user, 
$password, false, $server_port, $server_socket);
     }
 
     if ($return_value == false) {
@@ -131,9 +156,9 @@ function PMA_DBI_connect($user, $password, $is_controluser 
= false, $server = nu
 /**
  * selects given database
  *
- * @param   string          $dbname database name to select
- * @param   object mysqli   $link   the mysqli object
- * @return  boolean         true or false
+ * @param string  $dbname  database name to select
+ * @param mysqli  $link    the mysqli object
+ * @return boolean
  */
 function PMA_DBI_select_db($dbname, $link = null)
 {
@@ -150,10 +175,10 @@ function PMA_DBI_select_db($dbname, $link = null)
 /**
  * runs a query and returns the result
  *
- * @param   string          $query      query to execute
- * @param   object mysqli   $link       mysqli object
- * @param   integer         $options
- * @return  mixed           true, false or result object
+ * @param   string   $query      query to execute
+ * @param   mysqli   $link       mysqli object
+ * @param   integer  $options
+ * @return  mysqli_result|boolean
  */
 function PMA_DBI_real_query($query, $link, $options)
 {
@@ -171,8 +196,8 @@ function PMA_DBI_real_query($query, $link, $options)
 /**
  * returns array of rows with associative and numeric keys from $result
  *
- * @param   object mysqli result    $result
- * @return  array                   result rows
+ * @param   mysqli_result  $result
+ * @return  array
  */
 function PMA_DBI_fetch_array($result)
 {
@@ -182,8 +207,8 @@ function PMA_DBI_fetch_array($result)
 /**
  * returns array of rows with associative keys from $result
  *
- * @param   object mysqli result    $result
- * @return  array                   result rows
+ * @param   mysqli_result  $result
+ * @return  array
  */
 function PMA_DBI_fetch_assoc($result)
 {
@@ -193,8 +218,8 @@ function PMA_DBI_fetch_assoc($result)
 /**
  * returns array of rows with numeric keys from $result
  *
- * @param   object mysqli result    $result
- * @return  array                   result rows
+ * @param   mysqli_result  $result
+ * @return  array
  */
 function PMA_DBI_fetch_row($result)
 {
@@ -214,23 +239,21 @@ function PMA_DBI_data_seek($result, $offset)
 }
 
 /**
- * Frees the memory associated with the results
+ * Frees memory associated with the result
  *
- * @param   result  $result,...     one or more mysql result resources
+ * @param  mysqli_result  $result
  */
-function PMA_DBI_free_result()
+function PMA_DBI_free_result($result)
 {
-    foreach (func_get_args() as $result) {
-        if ($result instanceof mysqli_result) {
-            mysqli_free_result($result);
-        }
+    if ($result instanceof mysqli_result) {
+        mysqli_free_result($result);
     }
 }
 
 /**
  * Check if there are any more query results from a multi query
  *
- * @param   object mysqli   $link   the mysqli object
+ * @param   mysqli   $link   the mysqli object
  * @return  boolean         true or false
  */
 function PMA_DBI_more_results($link = null) {
@@ -247,7 +270,7 @@ function PMA_DBI_more_results($link = null) {
 /**
  * Prepare next result from multi_query
  *
- * @param   object mysqli   $link   the mysqli object
+ * @param   mysqli   $link   the mysqli object
  * @return  boolean         true or false
  */
 function PMA_DBI_next_result($link = null) {
@@ -356,8 +379,10 @@ function PMA_DBI_getError($link = null)
 }
 
 /**
+ * returns the number of rows returned by last query
  *
- * @param   object mysqli result    $result
+ * @param   mysqli_result    $result
+ * @return  string|ineteger
  */
 function PMA_DBI_num_rows($result)
 {
@@ -372,10 +397,10 @@ function PMA_DBI_num_rows($result)
 /**
  * returns last inserted auto_increment id for given $link or 
$GLOBALS['userlink']
  *
- * @param   object mysqli   $link   the mysqli object
- * @return  string ineteger
+ * @param   mysqli   $link   the mysqli object
+ * @return  string|ineteger
  */
-function PMA_DBI_insert_id($link = '')
+function PMA_DBI_insert_id($link = null)
 {
     if (empty($link)) {
         if (isset($GLOBALS['userlink'])) {
@@ -396,9 +421,9 @@ function PMA_DBI_insert_id($link = '')
 /**
  * returns the number of rows affected by last query
  *
- * @param   object mysqli   $link   the mysqli object
- * @param   boolean         $get_from_cache
- * @return  string integer
+ * @param   mysqli   $link   the mysqli object
+ * @param   boolean  $get_from_cache
+ * @return  string|integer
  */
 function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
 {
@@ -420,8 +445,8 @@ function PMA_DBI_affected_rows($link = null, 
$get_from_cache = true)
  * returns metainfo for fields in $result
  *
  * @todo preserve orignal flags value
- * @param   object mysqli result    $result
- * @return  array                   meta info for fields in $result
+ * @param   mysqli_result    $result
+ * @return  array  meta info for fields in $result
  */
 function PMA_DBI_get_fields_meta($result)
 {
@@ -499,8 +524,8 @@ function PMA_DBI_get_fields_meta($result)
 /**
  * return number of fields in given $result
  *
- * @param   object mysqli result    $result
- * @return  integer                 field count
+ * @param   mysqli_result    $result
+ * @return  integer  field count
  */
 function PMA_DBI_num_fields($result)
 {
@@ -510,9 +535,9 @@ function PMA_DBI_num_fields($result)
 /**
  * returns the length of the given field $i in $result
  *
- * @param   object mysqli result    $result
- * @param   integer                 $i      field
- * @return  integer                 length of field
+ * @param   mysqli_result    $result
+ * @param   integer          $i      field
+ * @return  integer  length of field
  */
 function PMA_DBI_field_len($result, $i)
 {
@@ -522,9 +547,9 @@ function PMA_DBI_field_len($result, $i)
 /**
  * returns name of $i. field in $result
  *
- * @param   object mysqli result    $result
- * @param   integer                 $i      field
- * @return  string                  name of $i. field in $result
+ * @param   mysqli_result    $result
+ * @param   integer          $i      field
+ * @return  string  name of $i. field in $result
  */
 function PMA_DBI_field_name($result, $i)
 {
@@ -534,9 +559,9 @@ function PMA_DBI_field_name($result, $i)
 /**
  * returns concatenated string of human readable field flags
  *
- * @param   object mysqli result    $result
- * @param   integer                 $i      field
- * @return  string                  field flags
+ * @param   mysqli_result    $result
+ * @param   integer          $i      field
+ * @return  string  field flags
  */
 function PMA_DBI_field_flags($result, $i)
 {


hooks/post-receive
-- 
phpMyAdmin

------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Phpmyadmin-git mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/phpmyadmin-git

Reply via email to