On Wed, Jun 10, 2009 at 4:29 PM, Tim Rupp<[email protected]> wrote: > Hi list, > > I'm using the Zend_Db classes to connect to an Oracle server and had a > couple questions. > > First, I have a tnsnames.ora file, which I put in /etc, but I can't get > ZF to make use of it. I'd like to skip specifying the hostname of the > server and just using the SID. Can this be done? I've gone so far as to > also do a > > putenv(sprintf('TNS_ADMIN=%s', '/etc/tnsnames.ora'));
Hmm, I had to double-check this since straight PDO uses an environment variable called ORACLE_HOME. And then it checks for ORACLE_HOME/network/admin. Zend_Db seems to use ext/oci and not PDO (?) so you best double-check that a straight test works with your TNS_ADMIN enviroment variable. Here's the standard PHP documentation: http://docs.php.net/manual/en/ref.oci8.php If you catch a bug here, maybe you can file an issue. > (...) > Next, I'm using quoteIdentifier in some of my code and when I do, the > SQL that is created is not working. In particular, something like > > select * from "nodes" > > is created when I use $db->quoteIdentifier('nodes'). >From what I know the standard behavior is that oracle will "UPPER" all table and fieldnames unless you use quotes. Then it'll match the exact name provided in quotes. Can you double-check the table name here -- e.g. NODES vs. nodes vs. Nodes, etc..? In case quoteIdentifiers() is run automatically and adds the quotes regardless, you can disable it: $options = array(Zend_Db::AUTO_QUOTE_IDENTIFIERS => false); $params = array( ... 'options' => $options, ); Zend_Db::factory('driver', $params); Hope that helps, Till
