Hello shockshell,

I was facing the same problem connecting to a data base with a space
in its name using Zend Framework PDO (the latest and greatest v
1.7.0).

So what I did first, I setup a simple script to connect to a MSSQL
database using native PDO methods... and it worked:

<code>
try {
 $db = new PDO('mssql:host=mssqlhost;[dbname=DB name with a space]', 'user', 
'secret');
 echo "connected!\n";
} catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "\n";
        exit;
}
</code>

That experiment gave me an idea that something is wrong with a Zend
MSSQL connection implementation.
I noticed that a database name should be placed in [...] in order to
do a proper connection to a database with a space in its name.
I modified a _dsn() method in a Zend_Db_Adapter_Pdo_Mssql class to
create a proper $dsn value: 

<code>
...
        // use all remaining parts in the DSN
        foreach ($dsn as $key => $val) {
            // put database name in [], to allow white space in a database name
            if ($key == 'dbname') {
                    $dsn[$key] = "[$key=$val]";
            } else {
                    $dsn[$key] = "$key=$val";
            }
        }
...
</code>

After that change a database connection has been sucesfully
established!

Marcus, would you like to verify my fix on a database containing '-'
in its name. Thanks!

-- 
Best regards,
Andrew Bidochko
Software Engineer/Architect
Mashup Technologies
http://mashuptechnologies.com


Reply via email to