Jdatabase - абстрактен слой база данни
обща информация
Група класове Database е абстрактно ниво на базата данни, което значително опростява живота на предприемача при работа с бази данни и е компонент на двете Joomla! CMS и Joomla! Framework. Това ниво позволява използването на различни видове SQL бази данни и да работи в различни среди с различен префикс маса. Специално Query Builder опростява и подобрява яснотата на SQL кодиране. Използването слой на базата данни осигурява максимална съвместимост и гъвкавост при разработването на разширения.
Групата CMS JDatabase класове, разположени в / библиотеки / Joomla / база данни. При разработването на разширения, ние често трябва да се справят с абстрактен клас JDatabaseDriver. По-долу е неговото наследство диаграма:
За да започнете работа с базата данни, ние трябва да отида на обект JDatabaseDriver класа:
като с това предизвикателство можете да използвате в развитието на компонент в модела:
Заявки
При изготвяне на SQL-заявки могат да бъдат използвани два начина: низ или обектно-ориентиран.
запитвания низ
Ето един прост низ на заявката:
Това е един обикновен SQL-синтаксис.
Моля, имайте предвид, че в инлайн елемент #_ се използва като префикс маса. При инсталиране на заместителя се заменя с истински префикс маса.
Query Builder JDatabaseQuery
JDatabaseQuery клас ви позволява да създавате заявки в обектно-ориентиран начин. Тук е запитването:
Можем също така да се използва веригата на метода:
ОО кампания е за предпочитане при разработването на разширения. Неговите предимства - това четимост и гъвкавост.
Инсталиране и изпълняващи се заявки
За да инсталирате метод SQL-заявка използва setQuery ($ заявка, $ компенсира = 0, $ лимит = 0):
- $ Query - директно SQL-заявка
- $ Офсет - с избор на начален запис
- $ Limit - колко записи, за да изберете
Например, ние искаме да се установи образец на десет записи и да започне подбора на петия рекорд:
инсталиран на заявката, но как да го направя? В JDatabaseDriver за това има много методи, които могат да се разделят на две групи:
- заявка за изпълнение, без да получат резултати. Обикновено се използва с INSERT. UPDATE. Изтриете.
- запитване за получаване на резултати. Обикновено се използва във връзка с SELECT.
За да се изпълни това искане, без да получи резултати, използвайки само един изпълни метод (). Той изпълнява с последните чрез метод setQuery () се обадете на:
В Joomla 2.5 вместо метода на изпълнение (), трябва да използвате метода на заявката ().
За извършване на заявката за получаване на резултати при използване на редица различни методи. Използването им зависи от това какъв вид запитване тръгнахме и какви резултати искаме. Например, най-популярният метод loadObjectList () връща масив от обекти:
За да се намали код писане, ние можем да използваме методи низ:
Прожекция на редове и входни данни
Преди да използвате низа на заявката на задължителен принцип трябва да се изследват. Това е един от принципите на безопасно програмиране - никога не се доверявайте на входните данни, дори ако те идват от предишна заявка от източника на данни. За защитни линии, можете да използвате методите на бягство ($ текст, $ допълнително = невярно) и цитат ($ текстови, $ бягство = вярно).
избягат () метод добавя наклонена черта пред опасни знаци (обикновено в предната част на единични кавички, но това зависи от машината на базата данни):
Той също така ви позволява да се позволи запазването на допълнителни знаци (например долно тире или знак за процент). За да направите това, вие трябва да мине втори параметър е вярно:
В този случай, знак на сто се възприема като низ елемент, а не като на специална маска.
цитат () метод екрани на линията и се увива в единични кавички:
Въпреки това, скрининг може да бъде изключено, тъй като в някои случаи е необходимо. Например, при използване на сходни условия. За да направите това, вие трябва да мине втори параметър за невярно:
променлива Заглавието на $ първо се пресява с помощта на метода на бягство (). където втората стойност се задава така. Ето защо, други специални символи Ще бъдат показани също (в противен случай е възможно да срещнете сериозни проблеми с производителността, ако посочите твърде много специални заместващи символи). На следващо място, резултатът се предава на метода на цитат (). но в същото време екраниране на разстояние (защото това вече е направено за бягство () метод):
Тъй като Joomla 3, цитирам () метод също се масив от редове и връща масив от защитени и увити в единични кавички линии:
Използване quoteName ()
Метод quoteName (име $, $ както = нула), необходими за използването на запазените имена (като например: маса, брой и т.н.) идентификатори (например имена на таблици или имена на полета) или специални символи. В различните системи за бази данни това се случи по различни начини: в MySQL е обратен единични кавички в SQL-сървър е квадратните скоби и в стандартна SQL е кавичките:
quoteName () метод, както и цитатът () метод може да отнеме масив:
Вторият параметър $ като служи като клаузата за AS. което е свързано с името на параметъра $. Тя може да бъде низ или масив. В последния случай, дължината му трябва да съответства на дължината на $ име:
Псевдоними методи цитат () и quoteName ()
За да цитирам () метод и quoteName (), има псевдоними:
- р () може да се използва вместо цитат ()
- QN () може да се използва вместо quoteName ()
Изпълнение на псевдоними е построен на магически метод __call (). така че тяхното използване е спорен. В крайна сметка, съществува усещането, че магическите методи са по-бавни.
други методи
getConnectors ()
Връща масив от наличните в момента шофьори.
getInstance (опции $ = масив ())
Шофьор връща инстанция с дадените опции. Има три глобални възможности, другите са специфични за драйвера на база данни. "Driver" опция определя какво трябва да се използва класа на водача да се свърже - по подразбиране е "MySQLi". "База данни" опция определя кои данни да се използват за свързване - по подразбиране е "нула". опция "Select" уточнява дали съединителя избира автоматично в базата данни - по подразбиране "вярно".
splitSql ($ SQL)
Сплит низ с множество искания към масива на индивидуалните молби.
Той се свързва с базата данни.
свързан ()
Връща истина, ако връзката с базата данни.
прекъсване на връзката ()
Метод за свързване към базата данни.
dropTable ($ маса, $ ifExists = вярно)
Метод за отстраняване на таблицата от базата данни, ако променливите $ ifExists е настроен да е вярно. след проверка на съществуването на масата.
getAffectedRows ()
Връща броя на редовете, които са били засегнати от предишното SQL-заявка.
getCollation ()
Връща кодировката на текущата база данни.
getConnection ()
А връзка с базата данни.
getCount ()
Общият брой на приключените шофьор база данни SQL-заявки.
getDatabase ()
Връща името на текущата връзка база данни.
getDateFormat ()
Връща съвместима функция PHP дата () на водача на база данни.
getMinimum ()
Връща минималната поддържана версия на базата данни.
getNullDate ()
Връща Null или нулева представителство на клеймото за шофьор база данни.
getNumRows ()
Връща броя на линиите, които са били в резултат от предишната SQL-заявка.
getPrefix ()
Връща представка за таблиците драйвера на база данни.
getExporter ()
Взима клас износителя.
getImporter ()
Взима клас вносителя.
getQuery ($ нов = невярно)
Взима текущата заявка обекта (или низа на заявката) или ново искане обект, ако параметъра е настроен да е вярно.
getIterator ($ колона = нула, $ клас = '\\ stdClass)
Получава нов итератор обект за текущата заявка.
getTableColumns ($ маса, $ typeOnly = вярно);
Тя връща асоциативен масив, където ключът е тип поле в таблицата и ценности - данни за вида на терена.
getTableCreate ($ таблици)
Той показва Създаване на заявка. който създава тези параметри маси маса опция $.
getTableKeys ($ таблици)
Връща масив от ключовия таблицата с характеристиките им.
getTableList ()
Тя връща масив със списъка на таблици в текущата база данни.
hasUTFSupport ()
Той определя дали база данни двигателят поддържа UTF-8 кодиране.
getVersion ()
Връща версия на базата данни.
insertid ()
Връща INSERT заявката за стойност наскоро добавя ред ID.
isMinimumVersion ()
Проверява дали инсталираната версия на базата данни водачът на базата данни или не.
влезте (ниво $, $ съобщение, масив $ контекст = масив ())
lockTable ($ tableName)
Заключва таблицата в базата данни.
replacePrefix ($ SQL, $ префикс = '#__ ")
Заменя идентификатор низ низ $ префикс, съдържаща се в tablePrefix клас имоти.
renameTable ($ oldTable, $ newTable, $ архивиране = нула, $ префикс = нула)
Преименува името на таблицата в $ oldTable $ newTable.
изберете ($ база данни)
Избира база данни за използване.
setDebug (ниво $)
Задава състоянието на дебъгер шофьор база данни.
setLogger (Вход \ LoggerInterface $ дървар)
Комплекти за използване връзка UTF-8 кодиране.
truncateTable ($ таблицата)
Изтрива всички редове в таблицата. Броячът, който се използва за уникалните нови записи на нула.
unlockTables ()
Отключва таблиците в базата данни.