Достъп до MySQL база данни с помощта на PHP
Предистория материали по основните програмни езици и оформление на сайтове.
Готов техника за създаване на прости и сложни динамични уебсайтове с PHP и MySQL.
разработване на уеб сайтове в "ключ".
Развитие на отделните фрагменти обекти, съвети за оформлението на уеб страници и уеб програмиране.
уеб инструмент
уеб магазин
Уеб услуги
Уеб графика
уеб ресурси
Искаш ли да сме в крак с развитието, което е на сайта? Регистрация за получаване на последните новини и статии.
Погледнете на Google
Достъп до база данни MySQL с помощта на PHP. Заявки към базата данни с помощта на PHP Data
До сега, примерите за съхранение и извличане на данни, ние се използват плоски файлове. Там, казахме, че използването на релационни бази данни предоставят по-прост, безопасност и ефективни дейности за съхранение на данни и извличане. Сега, след като е работил с MySQL да създаде база данни, можете да започнете да се свържете на базата данни към външен уеб интерфейс.
Как работят бази данни
Имаме база данни MySQL, така че можем да се подготвим за PHP код, за да се изпълнят стъпките. Нека започнем с форма на търсене. Това е прост HTML форма. Код за тази форма е показана на обява.
-poiskovaya страница search.php за база данни онлайн магазин
Когато кликнете Намери нарича results.php сценарий. Неговото пълно код е показано по-долу.
results.php -izvlekaet резултатите от заявката от база от данни MySQL и ги формати за показване.
Отворете страницата за търсене, попълнете в полето за търсене и натиснете бутона "Търси".
Имайте предвид, че скриптът ви позволява да влезете в MySQL заместващи символи% и _ (долна черта). Тази функция е изключително полезна за потребителите. Ако горните герои причиняват проблеми в молбата Ви, можете да ги отмените.
Заявки към базата данни
И в двата сценария, която осигурява достъп до база данни от Интернет, трябва да извършите няколко основни стъпки:
- Проверете и филтриране на данни, идващи от страна на потребителя.
- Осъществете връзка с базата данни.
- Въвеждане на заявка към база.
- Вземи резултати.
- За да представи резултатите на потребителя.
Той изпълнява тези действия results.php сценарий, а ние от своя страна ще разгледа всеки един от тях.
Проверка и филтриране на въвеждане на данни
Първо трябва да премахнете всички излишни пространства, които потребителят може случайно да влязат преди или след думата за търсене. Това се прави с помощта на тапицерия (функция) се прилага към $ SEARCHTERM.
$ SEARCHTERM = подреден ($ SEARCHTERM);
Следващият етап включва проверка, че потребителят е посочено критериите и вида на търсене. Моля, имайте предвид, че тя се извършва само след премахване на излишни интервали по краищата на критериите за търсене. Ако промените мястото на действие, ситуация може да възникне, когато тестът не беше празна, и следователно не води до съобщение за грешка, но тя съдържа само пространства, които са напълно отстранени тапицерия () функция:
ако (! $ ТипТърсене ||! $ SEARCHTERM)
ехо "Не сте въвели параметрите за търсене. Моля, върнете се на предишната страница и след това опитайте отново ";
изход;
>
Тя беше извършена проверка на променливата $ ТипТърсене въпреки факта, че в този случай идва от HTML тагове SELECT. Някой може да попита защо трябва да се провери на входните данни. Не забравяйте, че сметката на база данни може да бъде свързан по никакъв начин не един общ интерфейс.
И все пак, ако очаквате входа потребител някои данни, е важно те да бъдат изключени от всякакви контролни знаци. Както може би си спомняте ние вече говорихме за функционални addslashes на (), stripslashes () и get_magic_quotes_gpc (). Трябва да отбележим, контролни знаци (literalizovat тях) в рамките на въведени от потребителя данни, от решаващо значение за запазването им в базата данни.
В нашия случай, стойността се проверява, функцията връща get_magic_quotes_gpc (). Тази стойност се уточнява дали автоматично цитира. Ако не е, като се използва addslashes () функция е отменени контролни знаци:
ако (! get_magic_quotes_gpc ())
$ ТипТърсене = addslashes ($ ТипТърсене);
$ SEARCHTERM = addslashes ($ SEARCHTERM);
>
htmlspecialchars () функция се използва за кодиране на знаци, които имат специално значение в HTML. Нашият тест данни не съдържа символа & () характер, символи "по-малко" (<), больше (>) Или двойни кавички ( "), обаче, амперсанда може да се намери в имената на много книги. С помощта на тази функция помага да се избегнат грешки в бъдеще.
Установяване на връзка
В PHP5 има нова библиотека, за да се свържете MySQL, наречена MySQLi ( "аз" означава "подобрен" -Подобряване). В MySQL4 нов Quick Connect протокола, и MySQLi ви позволява да използвате всички свои предимства. Освен това, MySQLi библиотека ви позволява да използвате два синтаксиса: обектно-ориентирани и процесуално.
За да се свържете със сървъра MySQL, използвайте следния ред на скрипта:
@ $ Db = нов MySQLi ( "Localhost", "корен", "магазин", "книги");
Тази линия се създава инстанция на MySQLi на класа и се опитва да се свърже с хоста "Localhost" с име "корен" и "магазин" парола. Връзката ще използва "Книги" в базата данни.
В съответствие с обектно-ориентиран подход, да се обадите на метод за получаване на обект за достъп до базата данни. Ако предпочитате по процедурен подход, за MySQLi ви го позволява, след което връзката ще бъде, както следва:
@ $ Db = mysqli_connect ( "Localhost", "корен", "магазин", "книги");
Функцията за маса връща ресурс, а не обект. Този ресурс представлява връзка с базата данни, и с помощта на процедурен подход, което трябва да го давате на всички останали MySQLi функции. Този подход е много подобен на работа с файлови функции като fopen ().
Повечето MySQLi функции имат обектно-ориентиран и процесуално интерфейс. В общи линии, че разликите между тях се крият във факта, стотина имена процесуални възможности mysqli_ функции започват с префикса, и е необходимо да се предава един ресурс, който е получил от функция на повикване mysqli_connect (). Изключение от тези правила е да се свърже с базата данни, тъй като тя притежава класа дизайнер MySQLi.
В резултат на опита за връзка трябва да се провери, защото останалата част от кода в случай на неуспешен връзка няма да работи. Проверката се извършва със следния код:
ако (mysqli_connect_errno ())
ехо "Грешка: Не може да се свърже с базата данни. Моля, опитайте отново по-късно. ";
изход;
>
mysqli_connect_errno () връща броя на грешките или 0 в случай на успешна връзка.
Имайте предвид, че низа, че се опитва да се свърже с базата данни, започва с етап @ на потискане грешка. В този случай, можете да организирате елегантни ситуации за обработка на грешки. обработка на грешки също може да се осъществява чрез използване на изключения, обаче, в този прост пример, те решиха да не се използва.
Трябва да се помни, че в MySQL брой връзки, които могат да съществуват в същото време е ограничен. Тази граница се определя от max_connections на параметрите. Неговото назначение като рода MaxClients параметър на уеб сървъра Apache, предизвика сървъра, за да отхвърли новите заявки за свързване за да се предотврати пълното използване на компютърни ресурси в най-високите натоварвания часове или в случай на авария програма за поддръжка.
Стойностите на тези параметри могат да се променят чрез редактиране на конфигурационни файлове. За да конфигурирате параметъра MaxClients в Apache, следва да измени httpd.conf файла. Създаване max_connections в MySQL се извършва чрез редактиране my.conf на файла.
Избор на база данни
Работа с MySQL от командния ред, трябва да укажете базата данни, използвана:
Същото е необходимо и при свързване от мрежата. Базата данни ще се използва е посочен в параметър MySQLi конструктора или mysqli_connect (функцията). Ако по-късно искате да промените в базата данни, използвана за тази функция е mysqli_select_db (), който е достъпен, както следва:
$ Гб -> select_db (DBNAME)
mysqli_select_db (db_resource, db_name)
И тук двете версии функции - обектно-ориентиран и процедурна, с друг процесуален LSH mysqli_ префикс в името и параметър, който трябва да бъде приет, за да се свържете на ресурса.
Сверки с базата данни
За да направите заявка, трябва да използвате mysqli_query (функция). Въпреки това, преди искането е необходимо да се изгради:
$ Query = "Изберете * от книги
където ". $ ТипТърсене".
като " '%%" $ SEARCHTERM. ".";
В този случай стойностите, които се търсят, потребителят е въвел ($ ТипТърсене) ги в споменатата област ($ SEARCHTERM). Вероятно сте забелязали, че за картографиране, ние използвахме подобни, а не eqal -с търсене в базата данни обикновено има смисъл да се увеличи броя на граничния търсене.
Сега можете да изпълните заявката:
$ Резултат = $ db -> заявка ($ заявка);
Или, ако предпочитате процесуално интерфейс, заявката ще изглежда така:
$ Резултат = mysqli_query ($ db, $ заявка);
Минавате на искането да бъде изпълнено, както и в случаите на процесуално интерфейс, връзката с базата данни.
Обектно-ориентирано версия връща резултат обекта и процесуално версия - ресурс резултат. Във всеки случай, върнатата стойност се съхранява в променлива резултата от $ за по-нататъшна употреба. Функцията връща фалшива, ако възникне грешка.
Получаване на резултатите от заявката
Има много функции, които позволяват различни начини за изолиране на желаните фрагменти на идентификатора на обект или резултат. Обект или резултат идентификатор - е ключът за достъп до върнатия низ заявка.
В нашия пример, ние брои броя на редовете върнати и заявката, като се използва функцията mysqli_fetch_assoc ().
Това обектно-ориентиран подход, броя на редовете върнати се съхранява в NUM_ROWS на елементите доведе обект. Обърнете се към елементите, посочени по следния начин:
$ NUM_RESULTS = $ резултат -> NUM_ROWS;
В процедурен подход за получаване на броя на редовете върна функционални използвани mysqli_num_rows (), което е необходимо, за да прехвърли идентификатор резултат:
Тази информация е много полезна, ако имате намерение да обработва или показване на резултатите. Познаването на броя на редовете ви позволява да се повтаря през тях:
за ($ аз = 0; $ аз <$num_results; $i++)
// Процес резултатите
>
Във всяко повторение на този цикъл се извиква $ резултат -> fetch_assoc () (или mysqli_fetch_assoc ()) цикъл няма да се извършва в отсъствие на линиите на връщане. Именно тази функция извлича всеки ред на комплекта резултат и го връща като масив, където всеки ключ е името на атрибута, като всяка стойност на съответната стойност:
$ Ред = $ резултат -> fetch_assoc ();
Или с помощта на процедурен подход:
$ Ред = mysqli_fetch_assoc ($ резултат);
С масив $ ред на, можете да минете през всички полета и да се покаже както всеки един от тях:
ехо "
ISBN: ";
ехо stripslashes ($ ред [ 'ISBN']);
Както бе споменато по-рано, stripslashes () се нарича, за да "почисти" стойност, преди да го показва на потребителя.
Има няколко възможности за получаване на резултати от идентификатор на резултат. Вместо масив с име клавиши, можете да използвате цифров масив, използвайки mysqli_fetch_row ():
$ Ред = $ резултат -> fetch_row ();
или, в случай на процесуален подход:
$ Ред = mysqli_fetch_row ($ резултат);
Boutout атрибут стойности се съхраняват във всяка от ред стойности $ [0], $ ред [1], и така нататък. mysqli_fetch_array () функция ви позволява да получите низ в масив от двата типа.
С функция за mysqli_fetch_object (), можете да изберете линията да бъде поставен в обекта:
$ Ред = $ резултат -> fetch_object ();
$ Ред = mysqli_fetch_object ($ резултат);
След това можете да получите достъп до всеки атрибут, използвайки
$ Row -> заглавие, $ ред -> автор и т.н.
Прекъсване на връзката с базата данни
Освобождението на снимачната площадка резултат се изпълняват, както следва:
След това можете да затворите свързването към базата данни:
Изрично изключването не е необходимо, тъй като в края на връзката на скрипта ще се затвори автоматично.
- обсъждам