KNOW INTUIT, Лекция, Достъп до бази данни

ODBC достъп

PHP осигурява поддръжка за ODBC (Open DataBase Connectivity), която ви позволява да получите достъп до всяка ODBC-съвместима система за управление на база данни (DBMS), стига името на източника на данни (DSN) да е налично в системата или мрежата или да е наличен низ за връзка без DSN. Това включва достъп до релационни бази данни като Oracle, DB2, MS SQL Server, MySQL и MS Access. Тъй като PHP включва функции за достъп до MySQL база данни без DSN, които не изискват ODBC, този раздел ще използва MS Access, за да демонстрира ODBC методи. Примерите могат да се използват и с други СУБД, съвместими с ODBC.

ODBC връзки с помощта на DSN

За да се свържете към база данни с помощта на ODBC, първо трябва да създадете име на системен източник на данни.

Ето как се създава ODBC връзка с база данни на MS Access

Отворете иконата за административни инструменти в контролния панел.

Щракнете двукратно върху иконата Източници на данни (ODBC) в отворения прозорец.

Изберете раздела System DSN.

В раздела System DSN щракнете върху бутона Add.

Изберете Microsoft Access Driver. Щракнете върху бутона Край.

В следващия прозорец щракнете върху бутона Избор, за да намерите базата данни.

Задайте базата данни на име на източник на данни (DSN).

Щракнете върху бутона OK.

Конфигурацията на DSN трябва да бъде зададена на компютъра, хостващ уеб сайта. Ако сайтът се намира на отдалечен сървър, трябва да зададете конфигурацията на този сървър.

След като ODBC връзката е установена, могат да се използват специални PHP функции за свързване към базата данни и извличане на записи. Тези PHP функции са описани по-долу.

ODBC връзки без DSN

Връзки безDSN не изискват създаване на DSN на системно ниво за свързване към бази данни и предоставяне на алтернатива на DSN. Вместо да използва DSN за свързване с база данни, разработчикът дефинира необходимата информация направо в приложението. Когато се свързва без DSN, разработчикът може да използва стандарти за свързване, различни от ODBC, като OLE DB. Връзките без DSN трябва да се използват, когато няма достъп до сървъра за регистриране на DSN.

Microsoft Access използва следния низ за свързване, за да създава връзки без DSN:

odbc_connect(dsn/низ ​​за връзка без dsn,потребителско име,парола) е функция, използвана за свързване към ODBC източник на данни. Функцията приема четири параметъра: име на източник на данни (dsn) или низ за връзка без dsn, потребителско име, парола и опционален тип курсор. В случаите, когато потребителско име, парола и тип на курсора не са необходими, параметрите могат да бъдат заменени с празен низ - '' . ID на връзката, върнат от тази функция, се изисква от други ODBC функции. Възможно е да имате отворени няколко връзки едновременно, ако имат различни идентификатори или използват различни потребителско име и парола.

odbc_exec(connection_id, SQL_query_string) е функцията, използвана за изпълнение на SQL оператора. Функцията получава два параметъра: ID на обекта за връзка, създаден от функцията odbc_connect() и SQL оператора. Връща FALSE, ако възникне грешка. Връща набор от записи, ако SQL командата е успешна.

odbc_fetch_array(име на набор от записи) - Използва се за извличане на записи или редове от набор от записи като асоциативен масив. Името на набора от записи се генерира, когато се извика функцията odbc_exec(). Тази функция връща масив от низове или FALSE.

odbc_num_rows(име на набор от записи) – Връща броя на редовете в ODBC резултатния набор. Функцията връща -1, ако възникне грешка. За оператори INSERT, UPDATE и DELETE, odbc_num_rows() връща броя на засегнатите редове. За клауза SELECT това може да е броят на наличните редове. Забележка: Използването на odbc_num_rows() за определяне на броя на наличните редове, след като оператор SELECT върне -1 за драйверите на MS Access.

odbc_close(идентификатор на връзка) Затваря връзката към сървъра на базата данни, свързан с дадения идентификатор на връзка.

Добавяне на записи

С помощта на ODBC функциите, обсъдени в предишния раздел, можете да добавяте записи към таблиците на базата данни заедно с езика SQL. Записите се добавят към таблица на база данни с помощта на формуляр, който представлява полета за въвеждане на данни. След това бутонът извиква PHP скрипт, за да запише новата информация в таблицата с помощта на командата SQL INSERT. Типичен формуляр за въвеждане за добавяне на нов запис към таблицата с проучването е показан по-долу.

know

Полетата на формуляра са именувани съответно:

Преди да преминем към кода, нека покажем синтаксиса на оператора SQL INSERT:

За повече информация относно оператора INSERT вижте "Достъп до MySQL база данни".

Следният код се използва за обработка на данните от формуляра VisitorSurvey.php:

Когато се щракне върху бутона за изпращане, се създава $_POST суперглобален масив, съдържащ стойностите на формуляра. Стойностите на масива се присвояват на скаларни променливи. Това опростява кодирането на SQL израза. След това се изпълнява командата odbc_connect(). Този оператор изисква три параметъра - DSN или низ за връзка без DSN, потребителско име и парола. Тук низ за връзка без DSN се използва за свързване към база данни на Access. От Access до достъпданните не изискват потребителско име или парола, параметрите на потребителското име и паролата са кодирани като NULL стойности. Връзката към връзката се съхранява в променливата $conn. Това е пример за референтна променлива на PHP.

За този тип приложение обикновено е желателно да се извърши проверка на данните, преди да се добавят данни към таблица на базата данни. Това трябва да се направи, преди да се създаде връзка с база данни, като се използва техниката, обсъдена в "Основна обработка на формуляри".

В случай на грешка в кодирането, данните не се въвеждат в таблицата на базата данни и PHP издава предупреждение или съобщение за грешка. В този тип ситуации е полезно да потиснете тези съобщения, да добавите ръчен код за проверка на грешки и да създадете по-удобен за потребителя изход. Това може да се направи веднага след командата odbc_exec() чрез проверка на състоянието на новосъздадения набор от записи - $rs.

Да предположим, че в предишния код функцията odbc_exec() съдържа параметъра $sqlString вместо $sql. PHP незабавно ще спре да изпълнява страницата и ще покаже следното съобщение:

PHP грешка може да бъде потисната с помощта на оператора за контрол на грешки "@". След като потиснете грешката, можете да добавите код, за да създадете по-удобен за потребителя отговор. Този подход е показан по-долу:

След функцията odbc_exec() се използва оператор if за проверка на състоянието на набор от записи - $rs. Ако набор от записи е създаден успешно, се показва съобщението „Записът беше успешно добавен“. Ако възникне проблем, съобщението "Възникна грешка. Моля, опитайте отново."