Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php odbc connect

Поддержка ODBC в PHP

Функции ODBC в РНР, обычно называемые общими функциями ODBC, не только обеспечивают типовую поддержку ODBC, но и позволяют работать с некоторыми СУБД, обладающими собственным API, через стандартный ODBC API. К числу последних относятся следующие СУБД:

Обратите внимание: при работе с перечисленными СУБД стандартный механизм ODBC на самом деле не используется. Просто поддерживаемые в РНР общие функции ODBC применяются для взаимодействия с базами данных. Это удобно, поскольку при переходе на другую ODBC-совместимую СУБД (или СУБД из приведенного выше списка) все ваши сценарии будут нормально работать.

Поддержка ODBC встроена в комплект поставки РНР, поэтому вам за редкими исключениями практически не придется заниматься специальной настройкой.

В настоящее время существует около 40 общих функций ODBC. Впрочем, для выборки информации из ODBC-совместимой базы данных вполне достаточно нескольких функций, описанных ниже. Полный список общих функций ODBC в РНР приведен в документации (http://www.php.net/manual).

odbc_connect()

Перед тем как обращаться к ODBC-совместимой базе данных с запросами, необходимо сначала установить с ней связь. Соединение создается функцией ocbc_connect() . Синтаксис функции odbc_connect() :

int odbc_connect (string источник_данных, string имя_пользователя, string пароль [, int тип_курсора])

Параметр источник_данных определяет ODBC-совместимую базу данных, с которой вы пытаетесь установить связь. В параметрах имя_пользователя и пароль , как нетрудно догадаться, передаются имя пользователя и пароль, необходимые для подключения к источнику данных. Необязательный параметр тип_курсора предназначен для устранения проблем, возникающих при работе с некоторыми драйверами ODBC. Он может принимать одно из четырех возможных значений:

  • SQL_CUR_USE_IF_NEEDED;
  • SQL_CURSOR_USE_ODBC;
  • SQL_CUR_USE_DRIVER;
  • SQL CUR DEFAULT.

Возможно, вам не придется использовать этот параметр, но все же о нем следует помнить на случай, если ваш пакет ODBC не справится с обработкой того или иного запроса.

Использовать odbc_connect() в программе несложно. Пример:

Функция используется для открытия восстанавливаемых (persistent) соединений с базами данных. Она экономит системные ресурсы, поскольку odbc_pconnect() проверяет, не было ли данное соединение открыто ранее, и если было, использует предыдущее соединение.

odbc_close()

После завершения работы с ODBC-совместимой базой данных соединение необходимо закрыть, чтобы освободить все ресурсы, используемые открытым соединением. Соединение закрывается функцией odbc_close() :

void odbc_close ([int идентификатор_соединения])

В параметре идентификатор_соединения передается идентификатор открытого соединения. Рассмотрим небольшой пример:

odbc_prepare()

Перед непосредственной обработкой запрос необходимо «подготовить». Задача решается функцией odbc_prepare() :

int odbc_prepare (int идентификатор_соединения , string запрос)

В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect() . В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE ; в противном случае возвращается идентификатор результата, в дальнейшем используемый при вызове функции odbc_execute() (см. ниже).

odbc_execute()

Запрос, подготовленный функцией odbc_prepare() , выполняется функцией odbc_execute() . Синтаксис функции odbc_execute() :

int odbc_execute (int идентификатор результата [, array параметры])

В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_prepare() . Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.

Рассмотрим следующий пример:

В приведенном примере продемонстрирована транзакция ODBC, при которой данные запроса не отображаются в браузере (как это обычно делается при использовании команды SELECT ). Транзакция ODBC с использованием запроса QUERY описана ниже, в разделе «odbc_result_all()» .

odbc_exec()

Функция odbc_exec() объединяет odbc_prepare() и odbc_execute() . Синтаксис функции odbc_exec() :

int odbc_exec (int идентификатор_соединения , string запрос)

В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect() . В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE ; в противном случае возвращается идентификатор результата, используемый при последующих вызовах функций:

В этом примере функция odbc_exec() пытается выполнить запрос, текст которого содержится в переменной $query . При успешном выполнении переменной $result присваивается идентификатор результата; в случае неудачи ей присваивается значение FALSE и выводится сообщение, передаваемое при вызове die() .

odbc_result_all()

Очень удобная функция odbc_result_all() форматирует и отображает все записи для идентификатора результата, полученного при вызове odbc_exec() или odbc_execute() . Синтаксис функции odbc_result_all() :

int odbc_result_all (int идентификатор_результата [, string формат_таблицы])

В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_exec() или odbc_execute() . В необязательном параметре формат_таблицы передаются характеристики таблицы HTML. Рассмотрим следующий пример:

В результате выполнения этого примера содержимое таблицы customers будет выведено в таблице на светло-сером фоне с рамкой толщиной 1. Внешний вид таблицы для данных, приведенных на рис. 11.1, изображен на рис. 11.2.

odbc_free_result()

Хороший стиль программирования требует освобождения всех ресурсов, связанных с завершенными операциями. При работе с запросами ODBC эта задача решается функцией odbc_free_result() . Синтаксис функции odbc_free_result() :

int odbc_free_result (int идентификатор_результата)

В параметре функции передается идентификатор результата, который больше не будет использоваться в программе. Следует помнить, что все ресурсы памяти автоматически освобождаются по завершении сценария; таким образом, вызов функции odbc_free_result() необходим лишь для очень больших запросов, расходующих очень большие объемы памяти. Ниже приведен пример, демонстрирующий применение odbc_free_result() . Помните, что без этой функции обычно можно обойтись, если только вы не собираетесь выполнять несколько запросов в одном сценарии, поскольку с завершением сценария вся память будет автоматически освобождена.

После того как функция odbc_result_all() завершила использование идентификатора результата, память возвращается в систему при помощи odbc_free_result() .

На этом завершается наше знакомство с функциями ODBC в РНР, незаменимыми при создании простых интерфейсов на базе ODBC для доступа через Web. В следующем разделе многие из этих функций будут использованы для демонстрации того, как легко на базе РНР организуется взаимодействие с одной из самых популярных СУБД — Microsoft Access.

odbc_connect

(PHP 4, PHP 5, PHP 7)

odbc_connect — Соединяет с источником данных

Описание

Идентификатор соединения, возвращаемый этой функцией, необходим для других ODBC-функций. Вы можете держать одновременно открытыми несколько соединений.

Некоторые ODBC-драйверы, выполняющие сложные хранимые процедуры, могут обрываться с ошибкой типа: «Cannot open a cursor on a stored procedure that has anything other than a single select statement in it». Использование SQL_CUR_USE_ODBC поможет избежать появления этой ошибки. Также некоторые драйверы не поддерживают необязательный параметр row_number в odbc_fetch_row() . SQL_CUR_USE_ODBC также может помочь в этом случае.

Список параметров

Database Source Name (DSN) для соединения. В качестве альтернативы можно производить соединение и без DSN.

Устанавливает тип используемого курсора для соединения. Обычно этот параметр не нужен, но может оказаться полезным для обхода проблем с некоторыми драйверами ODBC.

Следующие константы определены для типа курсора:

  • SQL_CUR_USE_IF_NEEDED
  • SQL_CUR_USE_ODBC
  • SQL_CUR_USE_DRIVER

Возвращаемые значения

Возвращает соединение ODBC или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Соединения без DSN

// Microsoft SQL Server используя SQL Native Client 10.0 ODBC Driver — позволяет соединяться
// с SQL 7, 2000, 2005 и 2008
$connection = odbc_connect ( «Driver=;Server= $server ;Database= $database ;» , $user , $password );

// Microsoft Access
$connection = odbc_connect ( «Driver=;Dbq= $mdbFilename » , $user , $password );

// Microsoft Excel
$excelFile = realpath ( ‘C:/ExcelData.xls’ );
$excelDir = dirname ( $excelFile );
$connection = odbc_connect ( «Driver=;Driver > $excelFile ;DefaultDir= $excelDir » , » , » );
?>

Смотрите также

  • Для постоянных соединений: odbc_pconnect() — Open a persistent database connection

User Contributed Notes 36 notes

To make a DSN-less connection using ODBC to MS-SQL:

$user = ‘username’ ;
$pass = ‘password’ ;

$connection = odbc_connect ( $connection_string , $user , $pass );

?>

servername is the name of the database server

databasename is the name of the database

Note, I’ve only tried this from a windows box using the Microsoft ODBC drivers.

Under Windows odbc_connect (and PDO ODBC) apparently uses the Windows locale to handle input and output from e.g. MS access and MS SQL Server databases.

This causes lots of headaches if one is using other than ASCII characters.

Work-round solutions like utf8_encode and mb_convert both fails.

The solution I fund working is to perform the following changes to Windows

Control Panel > Region > Administrative > Change system locale
>Check ‘Use Unicode UTF-8 for worldwide language support.

One additional note regarding odbc_pconnect and possibly other variations of pconnect:

Читать еще:  Php кодирование url

If the connection encounters an error (bad SQL, incorrect request, etc), that error will return with be present in odbc_errormsg for every subsequent action on that connection, even if subsequent actions don’t cause another error.

A script connects with odbc_pconnect.
The connection is created on it’s first use.
The script calls a query «Select * FROM Table1».
Table1 doesn’t exist and odbc_errormsg contains that error.

Later(days, perhaps), a different script is called using the same parameters to odbc_pconnect.
The connection already exists, so it is reused.
The script calls a query «Select * FROM Table0».
The query runs fine, but odbc_errormsg still returns the error about Table1 not existing.

I’m not seeing a way to clear that error using odbc_ functions, so keep your eyes open for this gotcha or use odbc_connect instead.

WINNT 4 Workstation, PHP4

odbc_connect() kept giving me weird errors when trying to connect to a MSaccess DSN(Microsoft Jet engine couldn’t open the database ‘Unknow’. Another user is using it exclusively, or you dont have permission to use it).

After going nuts for a while, I realized that my database name had a space in it (course surveys.mdb), I shortened the name to eliminate the space .. and everything worked fine.

Concerning the note posted by Grisu on the 23-Dec-2003 11:51: Connect to an MS-Access Database on the Network via ODBC,

PLEASE dont forget to put double slashes as follows:

when setting up the registry key as indicated.

— Windows — OS
— Apache
— ODBC-Connction to MS-Access DB on a:
— Network Share

After many hours searching here´s how it works:

— Map the Network Drive where the mdb is located
— Setup System DSN in Control Panel with mapped Drive
— Open Registry at:
HKEY_LOCAL_MACHINESOFTWAREODBCODBC_INI
— Edit the for example «M:» to «\server. «
— Close Regedit
— The Apache-Service must run with a Domain (network)-User!!
— After that you can connect using:

hope that makes someone happy 🙂
bye

As always Microsoft is clueless. I’ve been trying to connect to an Access database on a W2K on the network (not a local file, but mapped on the V: drive), via ODBC.

All I got is this message:
Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] ‘(unknown)’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides., SQL state S1009 in SQLConnect in d:apachecmcreaart.php on line 13

So. I started looking al around and looks like the ODBC driver has some severe problems:

1. It cannot access a Access database via a mapped drive. And this is for ANY application, name it PHP, Coldfusion, whatever
2. You cannot make a system DSN with a UNC (\Serverresource), so you must map the drive

So. I quit on ODBC and went via ADO, this is the code that works:

// Driver do Microsoft Access (*.mdb)
// must be the name in your odbc drivers, the one you get
// from the Data Sources (ODBC).
// In this case, I’m in Mexico but the driver name is in portuguese, thanks Microsoft.

$sql = ‘SELECT username FROM tblUsuarios’;
$res = $conn->Execute($sql);
while (!$res->EOF)
<
print $res->Fields[‘username’]->Value . «
«;
$res->MoveNext();
>

$res->Close();
$conn->Close();
$res = null;
$conn = null;

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

If you keep running into this on the 64 bit versions of windows, ie server 2008, and none of the other solutions helped.

In a 64 bit windows server operating system, there are TWO odbc managers. When you pull up the usual menu for the odbc / dsn system, it is for the 64 bit odbc manager, and 32 bit applications (vb 6.0, PHP 5) will not work using these dsn’s.

This is where the 32 bit odbc manager is:

This might be obvious to some, but here is a quick tidbit that might save you some time if you’re using FreeTDS in Linux:

Be sure that you have these two lines in freetds.conf:
dump file = /tmp/freetds.log
dump file append = yes

so you can tail -f it in the background of debugging the problem. This helped me find my issue on on CentOS Linux:

1) tsql test works
2) isql test works
3) odbc connection in php also works WHEN RUN FROM THE SHELL
4) running PHP through apache does NOT work.

my /tmp/freetds.log file told me:
net.c:168:Connecting to MYDBSERVER port MYDBPORT
net.c:237:tds_open_socket: MYDBSERVER:MYDBPORT: Permission denied

and the answer was my firewall/SELinux was denying the Apache processes access to connect to the remote MSSQL DB port, but my shell accounts were fine.

Once you’ve set up a UnixODBC connection to Informix (as described elsewhere, for example in http://www.unixodbc.org/), the following PHP code will access a database via its DSN:

// We must set these environment variables for Informix to work. Either
// do it here or in php.ini.
putenv ( «INFORMIXDIR=/usr/share/informix» );
putenv ( «ODBCINI=/usr/local/unixODBC/etc/odbc.ini» );

// Open up a connection to the database.
if (!( $con = odbc_connect ( «CollectOh» , «» , «» )))
echo «

Connection to CollectOh failed.

n» ;
else
<
// Let’s try enumerating all of the tables in the database (there ain’t
// no «show tables» here).
if (( $res = odbc_exec ( $con , «select * from SYSTABLES» )))
<
echo «

n» ;
odbc_result_all ( $res );
echo «

// Close up shop, like good dobies.
odbc_close ( $con );
>
?>

Two additional notes regarding ODBC connections to a Network Sybase SQL Anywhere 8 Server..

I wrote a script using the PHP5 CLI binary that monitors a directory for changes, then updates a Network Server SQL Anywhere 8 database when a change was detected. Idealy, my program would run indefinately, and issue odbc_connect()/odbc_close() when appropriate. However, it seems that once connected, your odbc session is limited to 30 seconds of active time, after which, the connection becomes stale, and no further queries can be executed. Instead, it returns a generic «Authentication violation» error from the odbc driver.

Here’s an example:

= odbc_connect ( $connect_string , » , » );
$result = odbc_exec ( $qry , $conn ); //returns data
sleep ( 31 );
$result = odbc_exec ( $qry , $conn ); //»Authentication Violation»
?>

Additionally, it seems that odbc_close() doesn’t truely close the connection (at least not using Network SQL Anywhere 8). The resource is no longer usable after the odbc_close() is issued, but as far as the server is concerned, there is still a connection present. The connection doesn’t truely close until after the php script has ended, which is unfortunate, because a subsequent odbc_connect() commands appear to reuse the existing stale connection, which was supposedly closed.

My workaround was to design my script exit entirely after a the database update had completed. I then called my script whithin a batch file and put it inside an endless loop.

I’m not sure if this is a bug with PHP or what, but I thought I’d share in case someone else is pulling their hair out trying to figure this one out.

Php odbc connect

(PHP 3>= 3.0.6, PHP 4 )

odbc_connect — Connect to a datasource

Description resource odbc_connect ( string dsn, string user, string password [, int cursor_type])

Returns an ODBC connection > FALSE ) on error.

The connection id returned by this functions is needed by other ODBC functions. You can have multiple connections open at once. The optional fourth parameter sets the type of cursor to be used for this connection. This parameter is not normally needed, but can be useful for working around problems with some ODBC drivers.

Читать еще:  Site path php

With some ODBC drivers, executing a complex stored procedure may fail with an error similar to: «Cannot open a cursor on a stored procedure that has anything other than a single select statement in it». Using SQL_CUR_USE_ODBC may avo >odbc_fetch_row() . SQL_CUR_USE_ODBC might help in that case, too.

The following constants are defined for cursortype:

For persistent connections see odbc_pconnect() .

As always Microsoft is clueless. I’ve been trying to connect to an Access database on a W2K on the network (not a local file, but mapped on the V: drive), via ODBC.

All I got is this message:
Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] ‘(unknown)’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides., SQL state S1009 in SQLConnect in d:apachecmcreaart.php on line 13

So. I started looking al around and looks like the ODBC driver has some severe problems:

1. It cannot access a Access database via a mapped drive. And this is for ANY application, name it PHP, Coldfusion, whatever
2. You cannot make a system DSN with a UNC (\Serverresource), so you must map the drive

So. I quit on ODBC and went via ADO, this is the code that works:

// Driver do Microsoft Access (*.mdb)
// must be the name in your odbc drivers, the one you get
// from the Data Sources (ODBC).
// In this case, I’m in Mexico but the driver name is in portuguese, thanks Microsoft.

$sql = ‘SELECT username FROM tblUsuarios’;
$res = $conn->Execute($sql);
while (!$res->EOF)
<
print $res->Fields[‘username’]->Value . «
«;
$res->MoveNext();
>

$res->Close();
$conn->Close();
$res = null;
$conn = null;

Connecting with SQL in a ODBC source

2 ways, one is if your SQL server is runign in your machine

$ser=»LOCALMACHINE»; #the name of the SQL Server
$db=»mydatabase»; #the name of the database
$user=»myusername»; #a valid username
$pass=»my pass»; #a password for the username

# one line
$conn=odbc_connect(«Driver=;Server=».$ser.»;Database=».$db,$user,$pass);
# one line

the second way is if the SQL Server is runing in other machine but in the same network

$ser=»LOCALMACHINE»; #the name of the SQL Server
$db=»mydatabase»; #the name of the database
$user=»myusername»; #a valid username
$pass=»my pass»; #a password for the username

#one line
$conn=odbc_connect(«DRIVER=SQL Server;SERVER=».$ser.»;U ;
DATABASE=».$db.»;
Address=».$ser.»,1433″,»»,»»);
#one line

I fighted with the «Data source name not found and no
default driver specified, SQL state IM002 in SQLConnect»
error for a while trying to connect via ODBC to a SQL Server
2000. Finally I found this workaround:

$cn = odbc_connect(«Driver=;Server=MyServer;Database=MyDatabase»,
«MyUser»,»MyPassword»)

Change «MyServer», «MyDatabase», «MyUser» and «MyPassword» to the right values.

I guess that adding the «Integrated Security=YES» will work too.

Yvan Ecarri, MCDBA, MCSD

here’s a quick note about using php and db2 that cost me a couple of hours and several recompiles trying to figure out why it didn’t work.

put the below line in any script

Or, set that in your webserver environment somehow.

If you encounter the error:

«[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect»

make sure you have the correct permission to your database file (e.g. if using Win2k, might want to set the «Everyone» group to «Full Control»). For Windows, I find that I have to sometimes use the registry editor (e.g. RegEdt32.exe) to set the database file’s permission because for some unknown reason, setting the permission from the file’s «Properties» option does not work.

If you have problem to connect to sybase with an ODBC driver, try to set up your SYBASE environment variable to the correct directory.
([ODBC SQL Server driver]Allocation of a Sybase Open Client Context failed)

Ex : Here is a connection to a DSN

$conn = odbc_connect(«DSN1″,»USER»,»PASSWORD»);
echo «conn: $conn»;
if ($conn

If you have switched to a new Version of PHP (from 4.1 to 4.3) and at the same time have upgraded your Apache server (from 1.x to 2.x) and suddenly get the error:

«[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect»

It may be because you have your ODBC connections listed (Control Panel | ODBC) as User DSN rather than System DSN. They need to be System DSN in order for the PHP in the Apache service to access to them.

Thought I’d add a note here on this. I’m using Apache 2.0.39 on Windows XP and PHP 4.2.2.

It helps a lot if you don’t use capital letters in your dsn string.

Thought I also comment on the posts about using system dsns over file dsns. There are lots of posts saying use systems not files, but none (that I have seen) which explain why.

Essentially: File DSNs are specific to the current user, therefore the Internet Guest User Account doesn’t have rights to them. Systems are available to everyone.

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
odbc_connect ERRO at DB2
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

To Solve the problem with DB2 + PHP folow this steps!

INSTALL THE PROGRAM LIKE THIS!

— DB2 —
Install the DataBank
Install Application Tools
— END DB2 —

— APACHE —
cd ../mod_ssl-2.8.5-1.3.22/
./configure —enable-module=so —with-apache=../apache_1.3.22/ —with-ssl=../openssl-0.9.6c/
cd ../apache_1.3.22/
make
make certificate TYPE=custom
make install
— END APACHE —

— PHP —
cd ../php-4.1.1/
./configure —with-apxs=/usr/local/apache/bin/apxs —with-pgsql —with-mysql —with-ibm-db2=/usr/IBMdb2/V7.1
make
make install
— END PHP —

— LIB —
vim /etc/ld.so.conf
add line: /usr/IBMdb2/V7.1/lib
execute: ldconfig
— END LIB —

To Solve the error ODBC_CONNECT exec the db2profile at the apachectl. Like this!

— APACHE EDIT TO RUN DB2 —
vim /usr/local/apache/bin/apachectl
add line: . /usr/home/db2inst1/sqllib/db2profile
— END APACHE EDIT TO RUN DB2 —

NOW run /usr/local/apache/bin/apachectl startssl

You have a DB2 + APACHE + SSL + PHP + MYSQL + POSTGRES .

[]ж„Ђ
Helio Ferenhof

If you (still) get that annoying error like and you’re using Access:

MSaccess DSN(Microsoft Jet engine couldn’t open the database ‘Unknow’.
Another user is using it exclusively, or you dont have permission to use
it).

Make sure your access *.mdb file is not on a network drive. Put it on C: or D: disable all security first so you can test the connection. Once you can verify that you can connect add appropriate passwords, group access, etc.

WINNT 4 Workstation, PHP4

odbc_connect() kept giving me weird errors when trying to connect to a MSaccess DSN(Microsoft Jet engine couldn’t open the database ‘Unknow’. Another user is using it exclusively, or you dont have permission to use it).

After going nuts for a while, I realized that my database name had a space in it (course surveys.mdb), I shortened the name to eliminate the space .. and everything worked fine.

$cnx = odbc_connect(‘cliente’,’Administrador’,»);
//query
$SQL_Exec_String = «select * from Clientes»;
//ejecucion query
$cur= odbc_exec( $cnx, $SQL_Exec_String );
echo »

«.
»

n»;
while( odbc_fetch_row( $cur ) ) <
$Dni= odbc_result( $cur, 1 );
$Nombre= odbc_result( $cur, 2 );
$codigo= odbc_result( $cur, 3 );
$ciudad= odbc_result( $cur, 4 );
echo »

«.
»

n»;
>
echo «

DniNombrecodigociudad
$Dni$Nombre$codigo$ciudad

«;

Due to multiple requests, more for DSN-less connections:

$db_connection = new COM(«ADODB.Connection»);

$db_connstr = «DRIVER=; DBQ=». realpath(«../databases/database.mdb») .» ;DefaultDir=». realpath(«../databases»);
$db_connection->open($db_connstr);
$rs = $db_connection->execute(«SELECT * FROM Table»);
$rs_fld0 = $rs->Fields(0);
$rs_fld1 = $rs->Fields(1);
while (!$rs->EOF) <
print «$rs_fld0->value $rs_fld1->valuen»;
$rs->MoveNext(); /* updates fields! */
>
$rs->Close();
$db_connection->Close();

(Prints first 2 columns for each row.)

To open a DSN-less connection on Win32, you can use this:

$db_connection = new COM(«ADODB.Connection»);

$db_connstr = «DRIVER=; DBQ=» . realpath(«../databases/database.mdb») . » ;DefaultDir=» . realpath(«../databases»);

$rs = $db_connection->execute(«SELECT * FROM Table»);

We’ve tried hard to connect from php to our IBM DB2 RS/6000 Server. It worked after we compiled with —ibm-db2= option, but it was unbelievable
slow.

No, just testing some options, we found out that it went from very slow (getting 100 records lasts 1 till 10 seconds) to fast access (almost same speed as with using JDBC from Servlets) to 0.2 till 0.3 seconds.

We simply added the optional parameter Cursortype to odbc_connect, and with the cursortype SQL_CUR_USE_ODBC it changed in that way!

Hope this helps anybody who must connect to db2 😉

If you don’t want to specify your login credentials on your web server, you can leave the login fields blank to use the integrated windows security like here:

Make sure you have switched your system dsn to integrated security, too !

(works on windows machines only, of course)

If like me you are using openlink from unix to access an MS Access database on an NT/Win2k machine and find out that your INSERT queries don’t do anything and don’t report any errors, use odbc_pconnect().

I couldn’t understand what was going on and after a bit of research I found out that with MySQL they recommended using mysql_pconnect() for INSERT queries. I tried the same thing with odbc and it worked.

If you’re connecting to a SQL server database through ODBC, you must set the default database of the ODBC DSN to the database you want to use.

There is no way to specify the database name in odbc_connect or odbc_pconnect, just the DSN name, username, and password.

If using Openlink to connect to a Microsoft Access database, you will most likely fine tha odbd_connect() works fine, but discover that ANY query will produce odd results; with SELECT queries failing with «[OpenLink][ODBC][Driver]Driver not capable, SQL state
S1C00 in SQLExecDirect in xxxx.php on line xx» and INSERT / DELETE queries warning «No tuples available at this result index».

In this case, use the SQL_CUR_USE_ODBC cursor!

This had me stumped for quite some time; because it was the odbc_exec() which was seemingly at fault. 🙂

i’m using Apache/1.3.12 (Win32) with php4 module to get data from sql server7.0 via odbc.. and it’s works ! Thanks very much.. Hope this script help the others as i were helped =)

PHP Database ODBC

ODBC is an Application Programming Interface (API) that allows you to connect to a data source (e.g. an MS Access database).

Create an ODBC Connection

With an ODBC connection, you can connect to any database, on any computer in your network, as long as an ODBC connection is available.

Here is how to create an ODBC connection to a MS Access Database:

  1. Open the Administrative Tools icon in your Control Panel.
  2. Double-click on the Data Sources (ODBC) icon inside.
  3. Choose the System DSN tab.
  4. Click on Add in the System DSN tab.
  5. Select the Microsoft Access Driver. Click Finish.
  6. In the next screen, click Select to locate the database.
  7. Give the database a Data Source Name (DSN).
  8. Click OK.

Note that this configuration has to be done on the computer where your web site is located. If you are running Internet Information Server (IIS) on your own computer, the instructions above will work, but if your web site is located on a remote server, you have to have physical access to that server, or ask your web host to to set up a DSN for you to use.

Connecting to an ODBC

The odbc_connect() function is used to connect to an ODBC data source. The function takes four parameters: the data source name, username, password, and an optional cursor type.

The odbc_exec() function is used to execute an SQL statement.

Example

The following example creates a connection to a DSN called northwind, with no username and no password. It then creates an SQL and executes it:

Retrieving Records

The odbc_fetch_row() function is used to return records from the result-set. This function returns true if it is able to return rows, otherwise false.

The function takes two parameters: the ODBC result identifier and an optional row number:

Retrieving Fields from a Record

The odbc_result() function is used to read fields from a record. This function takes two parameters: the ODBC result identifier and a field number or name.

The code line below returns the value of the first field from the record:

The code line below returns the value of a field called «CompanyName»:

Closing an ODBC Connection

The odbc_close() function is used to close an ODBC connection.

An ODBC Example

The following example shows how to first create a database connection, then a result-set, and then display the data in an HTML table.


Your browser does not support inline frames or is currently configured not to display inline frames.

Reliable, affordable, feature-rich web hosting!

Take the uncertainty out of Web hosting and let GoDaddy.com put service, performance and value back in. No matter which hosting type or plan you choose, your site receives 24/7 maintenance and protection in our world-class data center. Plus, you get the expert, friendly service you deserve, from the world’s largest hostname provider.

With three plans to choose from and prices starting at just $4.99 per month, GoDaddy.com is sure to have a plan that’s right-sized and right-priced just for you!

All plans feature FREE 24×7 setup, FREE 24×7 monitoring, best- of-breed routers, firewalls and servers, 24×7 onsite physical security and access to our exclusive Go Daddy Hosting Connection, THE place to install over 30 FREE applications. Virtual Dedicated and Dedicated Server plans also available. Visit GoDaddy.com today.

Virtual Dedicated, Dedicated Server and unlimited plans also available.

Your browser does not support inline frames or is currently configured not to display inline frames.

Get Your Diploma!

W3Schools’ Online Certification Program is the perfect solution for busy professionals who need to balance work, family, and career building.

The HTML Certificate is for developers who want to document their knowledge of HTML, XHTML, and CSS.

The JavaScript Certificate is for developers who want to document their knowledge of JavaScript and the HTML DOM.

The XML Certificate is for developers who want to document their knowledge of XML, XML DOM and XSLT.

The ASP Certificate is for developers who want to document their knowledge of ASP, SQL, and ADO.

The PHP Certificate is for developers who want to document their knowledge of PHP and SQL (MySQL).

WEB HOSTING
Web based charting
for ASP.NET
$15 Domain Name
Registration
Save $20 / year!
Buy UK Domain Names
Register Domain Names
Cheap Domain Names
Cheap Web Hosting
Best Web Hosting
PHP MySQL Hosting
Top 10 Web Hosting
UK Reseller Hosting
Web Hosting
FREE Web Hosting
WEB BUILDING
Website Templates
Flash Templates
Website Builder
Internet Business Opportunity
Custom Programming
FREE Trial or Demo
Web Content Manager
Forms,Web Alerts,RSS
Download XML editor
FREE Flash Website
FREE Web Templates
EDUCATION
US Web Design Schools
HTML Certification
JavaScript Certification
XML Certification
PHP Certification
ASP Certification

W3Schools is for training only. We do not warrant the correctness of its content. The risk from using it lies entirely with the user.
While using this site, you agree to have read and accepted our terms of use and privacy policy.
Copyright 1999-2009 by Refsnes Data. All Rights Reserved.

Ссылка на основную публикацию
Adblock
detector
HOME or Top of Page