Commit e8561ca9 authored by Taylor Otwell's avatar Taylor Otwell

Clean up the MySQL database connector.

parent 05902d22
...@@ -10,38 +10,32 @@ class MySQL extends Connector { ...@@ -10,38 +10,32 @@ class MySQL extends Connector {
*/ */
public function connect($config) public function connect($config)
{ {
$connection = new PDO($this->dsn($config), $config['username'], $config['password'], $this->options($config)); extract($config);
if (isset($config['charset']))
{
$connection->prepare("SET NAMES '{$config['charset']}'")->execute();
}
return $connection;
}
/**
* Format the DSN connection string for a MySQL connection.
*
* @param array $config
* @return string
*/
protected function dsn($config)
{
// Format the initial MySQL PDO connection string. These options are required // Format the initial MySQL PDO connection string. These options are required
// for every MySQL connection that is established. The connection strings // for every MySQL connection that is established. The connection strings
// have the following convention: "mysql:host=hostname;dbname=database" // have the following convention: "mysql:host=hostname;dbname=database"
$dsn = sprintf('%s:host=%s;dbname=%s', $config['driver'], $config['host'], $config['database']); $dsn = sprintf('%s:host=%s;dbname=%s', $driver, $host, $database);
// Check for any optional MySQL PDO options. These options are not required // Check for any optional MySQL PDO options. These options are not required
// to establish a PDO connection; however, may be needed in certain server // to establish a PDO connection; however, may be needed in certain server
// or hosting environments used by the developer. // or hosting environments used by the developer.
foreach (array('port', 'unix_socket') as $key => $value) foreach (array('port', 'unix_socket') as $key => $value)
{ {
if (isset($config[$key])) $dsn .= ";{$key}={$value}"; if (isset($config[$key]))
{
$dsn .= ";{$key}={$value}";
}
}
$connection = new PDO($dsn, $username, $password, $this->options($config));
if (isset($config['charset']))
{
$connection->prepare("SET NAMES '{$charset}'")->execute();
} }
return $dsn; return $connection;
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment