|
Posted by Jerry Stuckle on 10/01/06 14:38
Jacques Lebastard wrote:
> Jerry Stuckle a écrit :
>
>> Jacques Lebastard wrote:
>>
>>>
>>> I have a problem writing PHP ODBC scripts that suit both MySQL and
>>> PostgreSQL. So far, the following syntaxes seem to apply to each
>>> database (this is an 'insert' example; the same differences apply to
>>> 'select commands):
>>>
>>> MySQL: INSERT INTO MyTable (col1, col2) VALUES ("value1","value2")
>>> PGSQL: INSERT INTO "MyTable" (col1, col2) VALUES ('value1','value2')
>>>
>>> I'd like to have a single syntax for both databases. Is this possible?
>>> Do I need to modify either database configuration settings? Does each
>>> database (MySQL, PGSQL, MSSQL, Oracle, ...) use its own SQL syntax?
>>>
>>> Any advice welcome.
>>
>>
>> Both MySQL and Postgres support standardized SQL constructs, within
>> the restrictions of the release of code you're using (i.e. MySQL < 4.1
>> doesn't support subselects). So as long as you stay with this, you
>> could be OK.
>>
>> However, this only applies to data definition language (DDL)
>> statements such as CREATE TABLE, and data manipulation language (DML)
>> statements such as SELECT and INSERT. It does not apply to database
>> specific
>
>
> If they are supposed to support the same syntax, why does Postgres
> require table name with double quotes whereas I get an error using
> double quotes when accessing a MySQL DB? Is it a PHP issue, an ODBC
> driver issue?
>
Double quotes are not valid SQL syntax. Not using the ODBC interface
with Postgres, where does it require double quotes?
>> things like configuration parameters. These are outside of the SQL
>> language, and anything supported by the database is for your
>> convenience only and probably not supported by other databases.
>>
>> However, I question why you'd even use ODBC. If you're using PHP,
>
>
>> Pear::MDB is much faster and more flexible. It also runs well on every
>
>
> Humm... pear.php.net seems offline... I'll try later.
>
>> platform, unlike ODBC.
>>
>> But personally when I need both, I just encapsulate the
>> database-specific code in PHP classes and select which class I want. But
>
>
> I do have classes to access either LDAP directories, CVS & RAW files,
> ODBC databases and other specific storage media. I thought I could
> access all databases using a single ODBC class (instead of using
> php_mysql, php_oci8, php_pg, ...). Maybe I was naive..
>
Nope, ODBC never has lived up to its promise of complete transparency.
>> then all of my DB-specific code is generally in classes anyway.
>>
> I'll have a look at the MDB package as soon as the site is reachable.
>
> Thanks for your advice,
>
It's still not perfect, but better than ODBC, IMHO.
But I still just use my own classes. Much faster and not all that hard
to do.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|