Getting a PHP PDO connection from a mysql_connect()?

Both extensions internally use EG(persistent_list) to store the persistent connection handle. But they create different hashes/keys for this list, so they can’t find entries of the respective other extension.

The mysql extension creates keys of the form "mysql_<host&port>_<user>..." while pdo builds "PDO:DBH:DSN=<dsn>:<user>:....". The hashes are used almost like array-keys in a php script. (Over-)simplyfied example:

function pconnect($host,$user,$pass) {
  global $persistent_list;
  $hashkey = sprintf("extensionname_%s_%s_%s", $host, $user, $pass);
  if ( isset($persistent_list[$hashkey]) ) {
    // use stored connection
  }
  else {
    // create new connection
  }
}

So the answer is: No, the connections will not be shared between and re-used by the mysql extension and PDO.

Leave a Comment