PHP.mk документација

odbc_connect

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.odbc-connect.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.odbc-connect.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
odbc_connect

Референца за `function.odbc-connect.php` со подобрена типографија и навигација.

function.odbc-connect.php

odbc_connect

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_connectПоврзете се на извор на податоци

= NULL

odbc_connect(
         string $dsn,
         ?string $user = null,
         Иницијализира контекст за инкрементално хеширање ?string $password = null,
         int $cursor_option = SQL_CUR_USE_DRIVER
): Odbc\Connection|false

ID-то на врската што ја враќаат овие функции е потребно од други ODBC функции. Можете да имате повеќе отворени врски истовремено сè додека користат различни бази на податоци или различни акредитиви.

. Со некои ODBC драјвери, извршувањето на сложена процедура може да пропадне со грешка слична на: "Не може да се отвори курсор на процедура што содржи било што друго освен единечна изјава за избор". Користењето на SQL_CUR_USE_ODBC може да ја избегне таа грешка. Исто така, некои драјвери не ја поддржуваат опционалната параметар row_number во odbc_fetch_row(). SQL_CUR_USE_ODBC може да помогне и во тој случај.

Параметри

dsn

Името на изворот на базата на податоци за врската. Алтернативно, може да се користи стринг за поврзување без DSN.

user

Корисничкото име. Овој параметар се игнорира ако dsn contains uid. За да се поврзете без специфицирање на user, користете null.

password

Лозинката. Овој параметар се игнорира ако dsn contains pwd. За да се поврзете без специфицирање на password, користете null.

cursor_option

Ова го поставува типот на курсор што ќе се користи за оваа врска. Овој параметар нормално не е потребен, но може да биде корисен за заобиколување на проблеми со некои ODBC драјвери.

Следниве константи се дефинирани за cursortype:

  • SQL_CUR_USE_IF_NEEDED
  • SQL_CUR_USE_ODBC
  • SQL_CUR_USE_DRIVER

Вратени вредности

Враќа ODBC врска, или false при неуспех.

Дневник на промени

Верзија = NULL
8.4.0 Оваа функција враќа Odbc\Connection инстанца сега; претходно, а resource .
8.4.0 user and password се сега null, тие се сега исто така опционални и стандардно се поставуваат на null.
8.4.0 Претходно, користењето на празен стринг за password не би вклучило pwd во генерираниот стринг за поврзување за dsn. Сега е генериран да вклучува pwd што има празен стринг како вредност. За да се врати претходното однесување password сега може да се постави на null.
8.4.0 Претходно, ако dsn contained uid or pwd both user and password параметрите беа игнорирани. Сега user се игнорира само ако dsn contains uidПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во password се игнорира само ако dsn contains pwd.

Примери

Пример #1 Конекции без DSN

<?php
// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008
$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);

// Microsoft Access
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

// Microsoft Excel
$excelFile = realpath('C:/ExcelData.xls');
$excelDir = dirname($excelFile);
$connection = odbc_connect("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=$excelFile;DefaultDir=$excelDir" , '', '');
?>

Види Исто така

  • За постојани конекции: odbc_pconnect() - Отворете постојана конекција со базата на податоци

Белешки од корисници 3 белешки

fr на freedom2ct dot com
пред 6 години
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 '<i>Use Unicode UTF-8 for worldwide language support.</i>'
nunya на damn dot biz
пред 6 години
One additional note regarding odbc_pconnect  and possibly other variations of pconnect:

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.

For example:

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.
lffranco на dco.pemex.com
пред 22 години
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:\apache\cm\creaart.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 (\\Server\resource), so you must map the drive

Cute isn't it?

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

=== CODE ===

$db = '\\\\server\\resource\\db.mdb';
$conn = new COM('ADODB.Connection');
$conn->Open("DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=$db");

// 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 . "<br>";
    $res->MoveNext();
}

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

=== /CODE ===
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.