downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

odbc_autocommit> <ociwritetemporarylob
[edit] Last updated: Mon, 01 Nov 2010

view this page in

CVI. ODBC Funktionen

Einführung

Zusätzlich zur normalen ODBC-Unterstützung bieten die ODBC-Funktionen in PHP auch Schnittstellen zu einigen Datenbanken, die Ihre API der Semantik der ODBC-API nachempfunden haben. Statt vielen nahezu identischen Datenbanktreibern wurden diese Treiber zu einer einzigen Gruppe von ODBC-Funktionen zusammengefasst.

Die folgenden Datenbanken werden von den ODBC-Funktionen unterstützt: » Adabas D, » IBM DB2, » iODBC, » Solid und » Sybase SQL Anywhere.

Anmerkung: Es ist kein echtes ODBC in die Kommunikation mit oben genannten Datenbanken involviert. Es handelt sich um echte native Datenbankschnittstellen, die den Funktionsnamen und den Funktionssyntax der ODBC-Funktionen nutzen. Die Ausnahme ist iODBC. Wenn PHP mit iODBC-Unterstützung kompiliert wird, können alle ODBC-kompatiblen Treiber mit PHP genutzt werden. iODBC wird von » OpenLink Software betreut. Mehr Informationen zu iODBC, unter anderem eine HOWTO, finden Sie auf » www.iodbc.org.

Anforderungen

Um die Datenbanken mit PHP nutzen zu können, sollten die dafür benötigten Bibliotheken installiert sein.

Installation

--with-adabas[=DIR]

Inkludiert Adabas D Unterstützung. DIR ist das Adabas Installationsverzeichnis. Default ist /usr/local.

--with-sapdb[=DIR]

Inkludiert SAP DB Unterstützung. DIR ist das SAP DB Installationsverzeichnis. Default ist /usr/local.

--with-solid[=DIR]

Inkludiert Solid Unterstützung. DIR ist das Solid Installationsverzeichnis. Default ist /usr/local/solid.

--with-ibm-db2[=DIR]

Inkludiert IBM DB2 Unterstützung. DIR ist das DB2 Installationsverzeichnis. Default ist /home/db2inst1/sqllib.

--with-empress[=DIR]

Inkludiert Empress Unterstützung. DIR ist das Empress Installationsverzeichnis. Default ist $EMPRESSPATH. Ab PHP4 unterstützt diese Option nur Empress Version 8.60 und höher.

--with-empress-bcs[=DIR]

Inkludiert Empress Local Access Unterstützung. DIR ist das Empress Installationsverzeichnis. Default ist $EMPRESSPATH. Ab PHP4 unterstützt diese Option nur Empress Version 8.60 und höher.

--with-birdstep[=DIR]

Inkludiert Birdstep Unterstützung. DIR ist das Birdstep Installationsverzeichnis. Default ist /usr/local/birdstep.

--with-custom-odbc[=DIR]

Inkludiert benutzerdefinierte ODBC Unterstützung. DIR ist das ODBC Installationsverzeichnis. Default ist /usr/local. Stellen Sie sicher, dass CUSTOM_ODBC_LIBS definiert ist und dass sich eine odbc.h in Ihrem Include Verzeichnis befindet. Z.B sollten Sie folgendes für Sybase SQL Anywhere 5.5.00 auf QNX definieren, bevor Sie das Configure Skript starten: CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc".

--with-iodbc[=DIR]

Inkludiert iODBC Unterstützung. DIR ist das iODBC Installationsverzeichnis. Default ist /usr/local.

--with-esoob[=DIR]

Inkludiert Easysoft OOB Unterstützung. DIR ist das OOB Installationsverzeichnis. Default ist /usr/local/easysoft/oob/client. defaults to

--with-unixODBC[=DIR]

Inkludiert unixODBC Unterstützung. DIR ist das unixODBC Installationsverzeichnis. Default ist //usr/local.

--with-openlink[=DIR]

Inkludiert OpenLink ODBC Unterstützung. DIR ist das OpenLink Installationsverzeichnis. Default ist /usr/local. Dies ist das gleiche wie iODBC.

--with-dbmaker[=DIR]

Inkludiert DBMaker Unterstützung. DIR ist das DBMaker Installationsverzeichnis. Default ist, wo die letzte Version von DBMaker installiert ist (wie z.B. /home/dbmaker/3.6).

Um unified ODBC Unterstützung in PHP 3 zu deaktivieren, verwenden Sie die Option --disable-unified-odbc. Nur anwendbar, wenn iODBC, Adabas, Solid, Velocis oder eine spezielle ODBC Schnittstelle aktiviert ist.

Die Windowsversion von PHP enthält diese Erweiterung. Um diese Funktionen zu verwenden, müssen Sie keine zusätzlichen Erweiterungen aktivieren.

Laufzeit Konfiguration

Das Verhalten der ODBC-Funktionen wird von den Einstellungen in der globalen Konfigurationsdatei php.ini bestimmt.

Tabelle 187. ODBC-Konfigurationsoptionen

NameStandardEinstellbar in
odbc.default_db *NULLPHP_INI_ALL
odbc.default_user *NULLPHP_INI_ALL
odbc.default_pw *NULLPHP_INI_ALL
odbc.allow_persistent"1"PHP_INI_SYSTEM
odbc.check_persistent"1"PHP_INI_SYSTEM
odbc.max_persistent"-1"PHP_INI_SYSTEM
odbc.max_links"-1"PHP_INI_SYSTEM
odbc.defaultlrl"4096"PHP_INI_ALL
odbc.defaultbinmode"1"PHP_INI_ALL

Anmerkung: Mit * markierte Einträge sind noch nicht implementiert.

Weitere Informationen und Definitionen der PHP_INI_*- Einstellungen finden Sie bei ini_set().

Hier eine kurze Erklärung der Konfigurationsoptionen:

odbc.default_db string

Standard-ODBC-Datenquelle, wenn in odbc_connect() oder odbc_pconnect() keine definiert wird.

odbc.default_user string

Nutzername, wenn in odbc_connect() oder odbc_pconnect() keiner angegeben wird.

odbc.default_pw string

Passwort, wenn keines in odbc_connect() oder odbc_pconnect() angegeben wird.

odbc.allow_persistent boolean

Einstellung, ob persistente ODBC-Verbindungen genutzt werden sollen.

odbc.check_persistent boolean

Aktiviert eine Überprüfung, ob eine persistente Datenbankverbindung noch aktiv ist, bevor sie weitergenutzt wird.

odbc.max_persistent integer

Die maximale Anzahl von persistenten ODBC-Verbindungen pro Prozess.

odbc.max_links integer

Die maximale Anzahl von ODBC-Verbindungen pro Prozess, inklusive persistenten Verbindungen.

odbc.defaultlrl integer

Bestimmt die Anzahl Bytes, mit denen ein LONG-Feld an PHP übergeben wird.

odbc.defaultbinmode integer

Definiert die Behandlung von Binärdaten.

Resource Typen

Diese Erweiterung definiert keine Resource-Typen.

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

ODBC_TYPE (integer)
ODBC_BINMODE_PASSTHRU (integer)
ODBC_BINMODE_RETURN (integer)
ODBC_BINMODE_CONVERT (integer)
SQL_ODBC_CURSORS (integer)
SQL_CUR_USE_DRIVER (integer)
SQL_CUR_USE_IF_NEEDED (integer)
SQL_CUR_USE_ODBC (integer)
SQL_CONCURRENCY (integer)
SQL_CONCUR_READ_ONLY (integer)
SQL_CONCUR_LOCK (integer)
SQL_CONCUR_ROWVER (integer)
SQL_CONCUR_VALUES (integer)
SQL_CURSOR_TYPE (integer)
SQL_CURSOR_FORWARD_ONLY (integer)
SQL_CURSOR_KEYSET_DRIVEN (integer)
SQL_CURSOR_DYNAMIC (integer)
SQL_CURSOR_STATIC (integer)
SQL_KEYSET_SIZE (integer)
SQL_CHAR (integer)
SQL_VARCHAR (integer)
SQL_LONGVARCHAR (integer)
SQL_DECIMAL (integer)
SQL_NUMERIC (integer)
SQL_BIT (integer)
SQL_TINYINT (integer)
SQL_SMALLINT (integer)
SQL_INTEGER (integer)
SQL_BIGINT (integer)
SQL_REAL (integer)
SQL_FLOAT (integer)
SQL_DOUBLE (integer)
SQL_BINARY (integer)
SQL_VARBINARY (integer)
SQL_LONGVARBINARY (integer)
SQL_DATE (integer)
SQL_TIME (integer)
SQL_TIMESTAMP (integer)
SQL_TYPE_DATE (integer)
SQL_TYPE_TIME (integer)
SQL_TYPE_TIMESTAMP (integer)
SQL_BEST_ROWID (integer)
SQL_ROWVER (integer)
SQL_SCOPE_CURROW (integer)
SQL_SCOPE_TRANSACTION (integer)
SQL_SCOPE_SESSION (integer)
SQL_NO_NULLS (integer)
SQL_NULLABLE (integer)
SQL_INDEX_UNIQUE (integer)
SQL_INDEX_ALL (integer)
SQL_ENSURE (integer)
SQL_QUICK (integer)

Inhaltsverzeichnis

odbc_autocommit — Ändert das Autocommit-Verhalten
odbc_binmode — Die Behandlung von Binärdaten
odbc_close_all — Beendet alle ODBC-Verbindungen
odbc_close — Beendet eine ODBC-Verbindung
odbc_columnprivileges — Liefert eine Ergebnis-Resource zurück, die eine Liste von Spalten und damit verbundenen Rechten enthält.
odbc_columns — Lists the column names in specified tables
odbc_commit — Führt eine ODBC-Transaktion aus
odbc_connect — Baut die Verbindung zu einer ODBC-Datenquelle auf
odbc_cursor — Findet den Cursornamen heraus
odbc_data_source — Returns information about a current connection
odbc_do — Ein Synonym für odbc_exec()
odbc_error — Get the last error code
odbc_errormsg — Get the last error message
odbc_exec — Bereitet einen SQL-Befehl auf und führt ihn aus
odbc_execute — Führt ein vorbereiteten SQL-Befehl aus
odbc_fetch_array — Fetch a result row as an associative array
odbc_fetch_into — Eine Ergebniszeile in ein Array stellen
odbc_fetch_object — Fetch a result row as an object
odbc_fetch_row — Liefert eine Datenzeile zurück
odbc_field_len — Bestimmt die Länge eines Feldes
odbc_field_name — Liefert die Spaltenbezeichnung
odbc_field_num — Liefert die Spaltennummer für eine Spaltenbezeichnung
odbc_field_precision — Synonym for odbc_field_len()
odbc_field_scale — Get the scale of a field
odbc_field_type — Liefert den Datentyp eines Feldes
odbc_foreignkeys — Returns a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table
odbc_free_result — Gibt den durch ein Abfrageergebnis belegten Speicher wieder frei
odbc_gettypeinfo — Returns a result identifier containing information about data types supported by the data source
odbc_longreadlen — Steuert die Nutzung von LONG-Spalten
odbc_next_result — Checks if multiple results are available
odbc_num_fields — Liefert die Anzahl der Ergebnisspalten
odbc_num_rows — Ergibt die Zeilenzahl des Abfrageergebnisses
odbc_pconnect — Öffnet eine persistente Datenbankverbindung
odbc_prepare — Stellt einen SQL-Befehl zur Ausführung bereit
odbc_primarykeys — Returns a result identifier that can be used to fetch the column names that comprise the primary key for a table
odbc_procedurecolumns — Retrieve information about parameters to procedures
odbc_procedures — Get the list of procedures stored in a specific data source
odbc_result_all — Gibt das aktuelle Abfrageergebnis als HTML-Tabelle aus
odbc_result — Erlaubt den Zugriff auf die Ergebnisdaten
odbc_rollback — Hebt eine Transaktion wieder auf
odbc_setoption — Verändert die ODBC-Einstellungen
odbc_specialcolumns — Returns either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction
odbc_statistics — Retrieve statistics about a table
odbc_tableprivileges — Lists tables and the privileges associated with each table
odbc_tables — Get the list of table names stored in a specific data source


odbc_autocommit> <ociwritetemporarylob
[edit] Last updated: Mon, 01 Nov 2010
 
add a note add a note User Contributed Notes ODBC Funktionen
chaz_meister_rock at yahoo dot com 29-Aug-2007 11:54
Windows 64 Caveats with ODBC

I'm pretty sure PHP only accesses the 32-bit ODBC stuff on Windows 64.  Therefore, you will need to configure your ODBC DSNs via the Data Source Administrator found at:

/WINDOWS/SysWOW64/odbcad32.exe
11-Oct-2006 07:28
I had big performance problems retrieving data form MS SQL Server with odbc only when the query was unsing a join.

I found out, that I had to connect with the cursor-type "SQL_CUR_USE_ODBC" and everything was ok:

$conn = odbc_connect("ShopLive", 'shop', 'xxx', SQL_CUR_USE_ODBC);
sven at ajaxtechforums dot com 27-Feb-2006 03:07
I found this to be a perfect alternative to the MaxDB special drivers of version 7.5.00. Just weren't that easy to install on *nix. Windows seems fine. Anyway The ODBC is a perfect alternative for connecting the SAPDB/MaxDB towards PHP.

Installation guide for the odbc alternative (instead of the MAXDB-php driver) can be found here:

http://maxdb.yapabout.com/viewtopic.php?t=21
xangelusx at hotmail dot com 11-Nov-2005 07:45
If you receive an error stating "Connection is busy with results for another hstmt, SQL state S1000 in SQLExecDirect" try opening your odbc connection using the SQL_CURSOR_FORWARD_ONLY option

<?php
$db_link
= odbc_connect($dsn, $username, $password, SQL_CURSOR_FORWARD_ONLY)
    or die(
'Error connecting to server. Server says: '.htmlspecialchars(odbc_errormsg()));
?>
Quickdraw 05-May-2005 11:06
In response to Holger's comment about using @@identity:

Be carefull. If the table you're inserting into has a trigger that also inserts into another table that has an identity column you'll get the key of that other table! use scope_identity() instead of @@identity
04-May-2005 08:14
I searched for the solution of why odbc connection of a network remote drive under Windows + Apache 2.0.X, cannot give the query, but seems no one provides the solution.

In fact, it is very simple.
Go to Control Panal -> Services;
Find and double click "Apache2";
In the page of "Log On", choose Log on as "This account" and give an account in the web server system which have the right to control the network remote drive;
Finally, restart Apache, and that's it.
denials at gmail dot com 23-Jan-2005 03:05
Ever wonder why you're experiencing really slow data retrieval times using IBM DB2 Universal Database for Linux, UNIX, and Windows? The default cursor type used by Unified ODBC is not supported by DB2, so it gets downgraded to a forward-only cursor -- and that negotiation occurs with every row fetch.

One way to force your PHP applications to use forward-only cursors is to modify your DB2 client configuration with a handy CLI patch2 setting value of 6:

$ db2 UPDATE CLI CONFIGURATION FOR SECTION dbname USING patch2 6

You have to update this client setting on the same machine on which you are running the PHP application. This works on Windows operating systems as well as on Linux & UNIX operating systems.

I ran a few basic benchmarks (fetch 10,000 rows consisting of 3 INTEGER columns from a remote database server) and concluded that this setting can make a major difference to your application speed:

Without CLI patch2 setting: ~22 seconds
With CLI patch2 setting: ~ 1.75 seconds

Note that the drawback of using this patch setting (or any other method of using forward-only cursors) makes odbc_num_rows() always return "-1" for the number of rows affected by a SELECT statement.
pascals at NOSPAM dot pobox dot com 27-Feb-2004 03:15
If the bundled ODBC library stumbles on some field formats (like some REAL from Pervasive.SQL), have a look at http://odbtp.sourceforge.net/.

After many headaches, I have adoped odbtp: it's a very solid library and best of all it's not tied to a particular OS.
vbwebprofi at gmx dot de 04-Nov-2003 04:31
On my search for a function to retriew the NewID of an inserted row wich has an autoincrement I found this solution like the mysql_insert_id for an ODBC connection to MS-Access :

<?
// make your connection below
$Connection = odbc_connect(...);
$Result = odbc_exec($Connection, "select @@identity");
$NewID = odbc_result($Result, 1);
odbc_free_result($Result);

// make here all what you want with the NewID

odbc_close($Connection);
?>

In my mind this should also work with MS-SQL-Server and with Sybase - via ODBC and direct (mssql_.../sybase_...).

HTH ...

Regards

Holger

 
show source | credits | sitemap | contact | advertising | mirror sites