PostgreSQL funktsiyalari. LXXX. PostgreSQL xususiyatlari ma'lumotlar bazasi hajmi

Standart andozalar kutubxonasi ( Standart shablon kutubxonasi , STL) C++ tilining standart kutubxonasiga kiritilgan. U eng ko'p ishlatiladigan konteynerlar va algoritmlarni amalga oshirishni o'z ichiga oladi, bu esa dasturchilarni ularni qayta-qayta yozish tartibidan qutqaradi. Konteynerlar va ularga qo'llaniladigan algoritmlarni ishlab chiqishda (masalan, bir xil elementlarni olib tashlash, saralash, qidirish va h.k.) ko'pincha ko'p qirralilik yoki ishlashni qurbon qilish kerak. Biroq, STL ishlab chiquvchilari kutubxonani ham samarali, ham universal qilish vazifasini qo'ydilar. Ushbu muammoni hal qilish uchun C++ tilining shablonlar va operatorni ortiqcha yuklash kabi universal vositalaridan foydalanilgan. Keyingi taqdimotda biz Microsoft tomonidan taqdim etilgan STL dasturiga va Visual C++ 6.0 kompilyatoriga tayanamiz. Biroq, yuqoridagilarning aksariyati boshqa kompilyatorlar tomonidan STL ilovalari uchun ham amal qiladi.

STLda asosiy tushunchalar konteyner (konteyner), algoritm (algoritm) va iterator (iterator) tushunchalaridir.

Idishob'ektlar ombori (ham o'rnatilgan, ham foydalanuvchi tomonidan belgilangan turlar). Odatda konteynerlar sinf shablonlari sifatida amalga oshiriladi. Eng oddiy konteyner turlari (statik va dinamik massivlar) bevosita C++ tiliga qurilgan. Bundan tashqari, standart kutubxona vektor, ro'yxat, navbat, xarita, to'plam va boshqalar kabi konteynerlarning ilovalarini o'z ichiga oladi.

Algoritmkonteynerdagi obyektlarni manipulyatsiya qilish funksiyasi. Algoritmlarning tipik misollari saralash va qidirishdir. STL turli konteynerlarga, jumladan C++ tiliga o'rnatilgan massivlarga qo'llanilishi mumkin bo'lgan 60 ga yaqin algoritmlarni amalga oshiradi.

Iteratorko'rsatgichning abstraktsiyasi, ya'ni konteynerdagi boshqa ob'ektlarga murojaat qilishi mumkin bo'lgan ob'ekt. Iteratorning asosiy funktsiyalari o'zi nazarda tutgan ob'ektga kirishni ta'minlash (dereferencing) va bir konteyner elementidan ikkinchisiga o'tish (iterator, shuning uchun iterator nomi). O'rnatilgan konteynerlar uchun muntazam ko'rsatkichlar iterator sifatida ishlatiladi. Keyinchalik murakkab konteynerlarda iteratorlar ortiqcha yuklangan operatorlar to'plamiga ega sinflar sifatida amalga oshiriladi.

STLda belgilangan elementlarga qo'shimcha ravishda bir qator mavjud yordamchi tushunchalar ; Shuningdek, ulardan ba'zilari bilan tanishishingiz kerak.

Ajratuvchi(allocator) - konteyner elementlari uchun xotira ajratish uchun mas'ul bo'lgan ob'ekt. Har bir standart konteyner bilan ajratuvchi bog'langan (uning turi shablon parametrlaridan biri sifatida uzatiladi). Agar ba'zi bir algoritm elementlar uchun xotirani ajratishi kerak bo'lsa, u buni ajratuvchi orqali amalga oshirishi kerak. Bunday holda, taqsimlangan ob'ektlar to'g'ri yo'q qilinishiga ishonch hosil qilishingiz mumkin.

STL standart ajratuvchi sinfni o'z ichiga oladi (xmemory faylida tasvirlangan). Bu STLda amalga oshirilgan barcha konteynerlar sukut bo'yicha foydalanadi. Biroq, foydalanuvchi o'z sinfini amalga oshirishi mumkin. Bu juda kamdan-kam hollarda zarur, lekin ba'zida samaradorlik yoki disk raskadrovka maqsadlarida amalga oshirilishi mumkin.

Keling, kiritilgan tushunchalarni ko'rib chiqishga batafsil to'xtalib o'tamiz.

Konteynerlar . Har bir konteyner qat'iy belgilangan interfeysni ta'minlaydi, bu orqali algoritmlar u bilan o'zaro ta'sir qiladi. Konteynerga xos iteratorlar ushbu interfeysni ta'minlaydi. Algoritmlar va konteynerlar o'rtasida o'zaro ta'sir qilish uchun qo'shimcha a'zo funktsiyalardan foydalanilmasligini ta'kidlash muhimdir. Bu standart algoritmlar ishlashi kerak, chunki C++ tilining o'rnatilgan konteynerlari, iteratorlari (ko'rsatkichlari) mavjud, ammo boshqa hech narsa yo'q. Shunday qilib, o'z konteyneringizni yaratishda, iteratorni amalga oshirish minimaldir.

Har bir konteyner ma'lum turdagi iteratorni amalga oshiradi. Bu ma'lum bir konteyner uchun samarali amalga oshirilishi mumkin bo'lgan eng funktsional iterator turini tanlaydi. "Samarali" iteratorda operatsiyalarni bajarish tezligi konteynerdagi elementlar soniga bog'liq bo'lmasligi kerakligini anglatadi. Masalan, vektor uchun tasodifiy kirish iteratori, ro'yxat uchun esa ikki yo'nalishli iterator amalga oshiriladi. Ro'yxat operatsiyasining tezligi uning uzunligi bilan chiziqli bo'lganligi sababli, ro'yxat uchun tasodifiy kirish iteratori amalga oshirilmaydi.

Idishning (vektor, ro'yxat, daraxt) haqiqiy tashkil etilishidan qat'i nazar, unda saqlanadigan elementlar ketma-ketlik sifatida qaralishi mumkin. Ushbu ketma-ketlikdagi birinchi elementning iteratori begin() funktsiyasi tomonidan qaytariladi va oxirgidan keyingi elementning iteratori end() funksiyasi tomonidan qaytariladi. Bu juda muhim, chunki STL dagi barcha algoritmlar boshlash va tugatish iteratorlari tomonidan belgilangan ketma-ketliklar bilan aniq ishlaydi.

STLda oddiy iteratorlardan tashqari teskari iteratorlar ham mavjud ( teskari iterator ). Teskari iterator konteynerdagi elementlar ketma-ketligini teskari tartibda takrorlashi bilan farq qiladi. Boshqacha qilib aytganda, + va - operatsiyalari teskari. Bu algoritmlarni elementlarning to'g'ridan-to'g'ri va teskari ketma-ketligiga qo'llash imkonini beradi. Masalan, find funktsiyasidan foydalanib, siz konteynerning "boshi" va "oxiri" dan elementlarni qidirishingiz mumkin.

STLda konteynerlar uchta asosiy guruhga bo'linadi (2-jadval): ketma-ket konteynerlar, assotsiativ konteynerlar va konteyner adapterlari. Birinchi ikkita guruh birinchi sinf konteynerlariga birlashtiriladi.

jadval 2

Konteyner klassi STL

Tavsif

Konteynerlarni ketma-ket joylashtiring

vektor

Dinamik massiv

deque

Ikki tomonlama navbat

ro'yxati

Ikki tomonlama chiziqli ro'yxat

Assotsiativ konteynerlar

Noyob kalitlarga ega assotsiativ konteyner

multiset

Ikki nusxadagi kalitlarga ruxsat beruvchi assotsiativ konteyner

Noyob elementlar to'plami uchun assotsiativ konteyner

multimap

Ikki nusxadagi elementlarga ega to'plamlar uchun assotsiativ konteyner

Konteyner adapterlari

stack

Standart to'plam

navbat

Standart navbat

ustuvorlik_navbat

Ustuvor navbat

Har bir konteyner sinfida amalga oshiriladi STL , konteyner bilan bog'langan turlar to'plamini tavsiflaydi. O'z konteynerlaringizni yozishda siz xuddi shu amaliyotga amal qilishingiz kerak. Mana eng muhim turlarning ro'yxati:

qiymat_turi - element turi;

o'lcham_turi - elementlar sonini saqlash turi (odatda size_t);

iterator - konteyner elementlari uchun iterator;

kalit_turi - kalit turi (assotsiativ konteynerda).

Turlarga qo'shimcha ravishda biz STL dagi deyarli har bir konteyner bajaradigan funktsiyalar to'plamini ajratib ko'rsatishimiz mumkin (3-jadval). Algoritmlar bilan o'zaro ta'sir qilish uchun ular talab qilinmaydi, lekin ularni amalga oshirish dasturdagi konteynerlarning almashinishini yaxshilaydi. STL konteynerlar o'xshash funksiyalarni ta'minlaydigan tarzda yaratilgan.

3-jadval

Barcha STL konteynerlarining umumiy usullari

Tavsif

standart konstruktor

Standart konstruktor. Odatda konteynerda bir nechta bo'ladi dizaynerlar

nusxa ko'chirish konstruktori

Konstruktorni nusxalash

buzuvchi

Destruktor

bo'sh

Konteynerda hech qanday element bo'lmasa, true qiymatini qaytaradi, aks holda noto'g'ri

maksimal_o'lcham

Konteyner uchun maksimal elementlar sonini qaytaradi

hajmi

Joriy vaqtda konteynerdagi elementlar sonini qaytaradi

operator =

Bir konteynerni boshqasiga tayinlaydi

operator<

Agar birinchi konteyner ikkinchisidan kichikroq bo'lsa, true qiymatini qaytaradi, aks holda noto'g'ri

operator<=

Agar birinchi konteyner ikkinchisidan katta bo'lmasa, true qiymatini qaytaradi, aks holda noto'g'ri

operator >

Agar birinchi konteyner ikkinchisidan kattaroq bo'lsa, true qiymatini qaytaradi, aks holda noto'g'ri

operator >=

Agar birinchi konteyner ikkinchisidan kichik bo'lmasa, true qiymatini qaytaradi, aks holda noto'g'ri

operator ==

Taqqoslangan konteynerlar teng bo'lsa, true qiymatini qaytaradi, aks holda noto'g'ri

operator!=

Taqqoslangan konteynerlar teng bo'lmasa, true qiymatini qaytaradi, aks holda noto'g'ri

almashtirish

Ikki konteyner elementlarini almashtiradi

Xususiyatlar faqat birinchi toifadagi konteynerlarda mavjud

boshlanishi

Ushbu funktsiyaning ikkita versiyasi konteynerning birinchi elementiga ishora qiluvchi iterator yoki const_iteratorni qaytaradi.

Ushbu funktsiyaning ikkita versiyasi konteyner tugaganidan keyingi keyingi pozitsiyaga ishora qiluvchi iterator yoki const_iteratorni qaytaradi.

rboshlang

Ushbu funktsiyaning ikkita versiyasi ham qaytariladi reverse_iterator yoki reverse_const_iterator , bu konteynerning oxirgi elementiga ishora qiladi

parchalash

Ushbu funktsiyaning ikkita versiyasi konteynerning birinchi elementi oldidagi pozitsiyaga ishora qiluvchi reverse_iterator yoki reverse_const_iteratorni qaytaradi.

kiritish, o'chirish,

Element(lar)ni ketma-ketlikning oʻrtasiga kiritish yoki olib tashlash imkonini beradi

Yakuniy jadval 3

aniq

Idishdagi barcha elementlarni olib tashlaydi

old, orqa

push_back, pop_back

Oxirgi elementni ketma-ket qo'shish yoki olib tashlash imkonini beradi

push_front, pop_front

Birinchi elementni ketma-ket qo'shish yoki olib tashlash imkonini beradi

Iteratorlar odatda o'zlari faoliyat ko'rsatadigan sinflarning do'stlari sifatida yaratiladi va bu sinflarning shaxsiy ma'lumotlariga bevosita kirish imkonini beradi. Bitta konteynerda u bilan bog'langan bir nechta iterator bo'lishi mumkin, ularning har biri o'zining "pozitsion ma'lumotlarini" saqlaydi (4-jadval).

4-jadval

Iterator turi

Kirish

Yo'naltirish

Takrorlash

Taqqoslash

Chiqish iteratori

(chiqish iteratori)

Faqat yozib olish

Kirish iteratori

(kirish iteratori)

Faqat o'qish

*, ->

==, !=

Oldinga iterator

(oldinga iterator)

O'qish va yozish

*, ->

==, !=

Ikki tomonlama iterator(ikki tomonlama iterator)

O'qish va yozish

*, ->

++, --

==, !=

Tasodifiy kirish iteratori

(tasodifiy kirish iteratori)

O'qish va yozish

*, ->,

++, --, +, -, +=, -=

==, !=, <, <=, >, >=

pg_update (resurs $ ulanish , string $jadval_nomi , massiv $ma'lumotlar , massiv $ holati [, int $options = PGSQL_DML_EXEC ])

pg_update() shartlarga mos keladigan jadvaldagi yozuvlarni almashtiradi holat ma'lumotlar ma'lumotlar. Agar dalil keltirilsa variantlari, ma'lumotlar funksiya tomonidan o'zgartiriladi pg_convert(), bu argumentning parametrlari o'tkaziladi.

Parametrlar ro'yxati

PostgreSQL ma'lumotlar bazasiga ulanish resursi.

Jadval_nomi

Yozuvlar yangilanadigan jadval nomi.

massiv( massiv), ularning kalitlari jadval_nomi jadvalining ustunlari nomlariga mos keladi va qiymatlar ushbu ustunlardagi ma'lumotlarni almashtiradi.

Vaziyat

massiv( massiv), tugmalari jadval_nomi jadvalining ustunlari nomlariga mos keladi. Faqat maydon qiymatlari massiv qiymatlariga mos keladigan qatorlar yangilanadi.

Variantlar

Konstantalardan biri PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNC yoki PGSQL_DML_STRING, yoki ularning kombinatsiyasi. Agar variantlar mavjud bo'lsa PGSQL_DML_STRING, funktsiya satrni qaytaradi. O'rnatilgan bo'lsa PGSQL_DML_NO_CONV yoki PGSQL_DML_ESCAPE, keyin funksiya pg_convert() ichki chaqirilmaydi.

Qaytish qiymatlari

Qaytadi TO'G'RI muvaffaqiyatli tugatilgandan so'ng yoki FALSE xato bo'lgan taqdirda. Funktsiya satrni qaytaradi ( ip), doimiy bo'lsa PGSQL_DML_STRING variantlarda mavjud.

Misollar

1-misol Foydalanish misoli pg_update()

$db = pg_connect("dbname=foo");
$data = massiv("maydon1" => "AA" , "maydon2" => "BB" );

// Bu xavfsiz, chunki $_POST avtomatik ravishda aylantiriladi
$res = pg_update ($db, "post_log", $_POST, $data);
agar ($res) (
aks-sado "Ma'lumotlar yangilandi:$res\n" ;
) boshqa (
aks-sado "Yaroqsiz ma'lumotlar yuborilgan bo'lishi kerak\n";
}
?>

pg_update (resurs $ ulanish , string $jadval_nomi , massiv $ma'lumotlar , massiv $ holati [, int $options = PGSQL_DML_EXEC ])

pg_update() shartlarga mos keladigan jadvaldagi yozuvlarni almashtiradi holat ma'lumotlar ma'lumotlar. Agar dalil keltirilsa variantlari, ma'lumotlar funksiya tomonidan o'zgartiriladi pg_convert(), bu argumentning parametrlari o'tkaziladi.

Parametrlar ro'yxati

PostgreSQL ma'lumotlar bazasiga ulanish resursi.

Jadval_nomi

Yozuvlar yangilanadigan jadval nomi.

massiv( massiv), ularning kalitlari jadval_nomi jadvalining ustunlari nomlariga mos keladi va qiymatlar ushbu ustunlardagi ma'lumotlarni almashtiradi.

Vaziyat

massiv( massiv), tugmalari jadval_nomi jadvalining ustunlari nomlariga mos keladi. Faqat maydon qiymatlari massiv qiymatlariga mos keladigan qatorlar yangilanadi.

Variantlar

Konstantalardan biri PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNC yoki PGSQL_DML_STRING, yoki ularning kombinatsiyasi. Agar variantlar mavjud bo'lsa PGSQL_DML_STRING, funktsiya satrni qaytaradi. O'rnatilgan bo'lsa PGSQL_DML_NO_CONV yoki PGSQL_DML_ESCAPE, keyin funksiya pg_convert() ichki chaqirilmaydi.

Qaytish qiymatlari

Qaytadi TO'G'RI muvaffaqiyatli tugatilgandan so'ng yoki FALSE xato bo'lgan taqdirda. Funktsiya satrni qaytaradi ( ip), doimiy bo'lsa PGSQL_DML_STRING variantlarda mavjud.

Misollar

1-misol Foydalanish misoli pg_update()

$db = pg_connect("dbname=foo");
$data = massiv("maydon1" => "AA" , "maydon2" => "BB" );

// Bu xavfsiz, chunki $_POST avtomatik ravishda aylantiriladi
$res = pg_update ($db, "post_log", $_POST, $data);
agar ($res) (
aks-sado "Ma'lumotlar yangilandi:$res\n" ;
) boshqa (
aks-sado "Yaroqsiz ma'lumotlar yuborilgan bo'lishi kerak\n";
}
?>

Dastlab UC Berkli kompyuter fanlari bo'limi tomonidan ishlab chiqilgan Postgres ba'zi tijorat ma'lumotlar bazalarida mavjud bo'lgan ko'plab ob'ektga yo'naltirilgan kontseptsiyalarga kashshof bo'ldi. U SQL92/SQL99 tilini, tranzaksiya yaxlitligini va turning kengaytirilishini qo'llab-quvvatlaydi. PostgreSQL asl Berkeley kodining ochiq manbali avlodidir.

PostgreSQL - bu bepul mahsulot. PostgreSQL qo'llab-quvvatlashidan foydalanish uchun sizga PostgreSQL 6.5 yoki undan keyingi versiya kerak bo'ladi. PostgreSQL 7.0 yoki undan keyingi versiyalari - PostgreSQL modulining barcha xususiyatlari uchun. PostgreSQL ko'plab belgilar kodlashlarini, jumladan, ko'p baytli belgilarni kodlashni qo'llab-quvvatlaydi. Joriy versiya va PostgreSQL haqidagi ma'lumotni http://www.postgresql.org/ saytida topish mumkin.

PostgreSQL-ni qo'llab-quvvatlashni yoqish uchun PHP kompilyatsiya qilishda --with-pgsql[=DIR] opsiyasi talab qilinadi. Agar umumiy ob'ektlar moduli mavjud bo'lsa, PostgreSQL moduli php.ini faylidagi kengaytma direktivasi yoki funksiya yordamida yuklanishi mumkin. dl(). Qo'llab-quvvatlanadigan ini direktivalari tarqatish manba kodi bilan ta'minlangan php.ini-dist faylida tasvirlangan.

1-jadval. Funktsiya nomi o'zgaradi
Eski ismYangi nom
pg_exec() pg_query()
pg_getlastoid() pg_last_oid()
pg_cmdtuples() pg_affected_rows()
pg_numrows() pg_num_rows()
pg_numfields() pg_num_fields()
pg_fieldname() pg_field_name()
pg_fieldsize() pg_field_size()
pg_fieldnum() pg_field_num()
pg_fieldprtlen() pg_field_prtlen()
pg_fieldisnull() pg_field_is_null()
pg_freeresult() pg_free_result()
pg_result() pg_fetch_result()
pg_loreadall() pg_lo_read_all()
pg_locreate() pg_lo_create()
pg_lounlink() pg_lo_unlink()
pg_loopen() pg_lo_open()
pg_loclose() pg_lo_close()
pg_loread() pg_lo_read()
pg_lowrite() pg_lo_write()
pg_loimport() pg_lo_import()
pg_loexport() pg_lo_export()

Barcha xususiyatlar barcha tuzilmalarda qo'llab-quvvatlanmaydi. Bu sizning libpq versiyasiga (PostgreSQL C Client interfeysi) va libpq qanday kompilyatsiya qilinganiga bog'liq. Agar funksiya etishmayotgan boʻlsa, libpq ushbu funksiya tomonidan talab qilinadigan imkoniyatlarni qoʻllab-quvvatlamaydi.

Siz ulanayotgan PostgreSQL serveridan yangiroq libpq dan foydalanishingiz ham muhim. Agar siz PostgreSQL Server kutganidan eskiroq libpq dan foydalanayotgan bo'lsangiz, muammolarga duch kelasiz.

6.3 (02/03/1998) versiyasidan beri PostgreSQL sukut bo'yicha unix domen soketidan foydalanadi. TCP porti sukut bo'yicha ochilmaydi. Jadvalda ushbu yangi ulanish imkoniyatlari tasvirlangan. Ushbu rozetkani /tmp/.s.PGSQL.5432 da topish mumkin. Ushbu parametr uchun "-i" bayrog'i bilan yoqish mumkin pochta boshlig'i, va uning qiymati quyidagicha bo'ladi: "TCP/IP soketlarini hamda Unix domen soketlarini tinglang."

Jadval 2. Postmaster va PHP

PostgreSQL serveriga ulanish buyruq satrida quyidagi qiymatlar juftligi bilan o'rnatilishi mumkin: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword");

Oldingi sintaksis: $conn = pg_connect("xost", "port", "variantlar", "tty", "dbname") endi tavsiya etilmaydi.

Atrof-muhit o'zgaruvchilari PostgreSQL server/mijozning xatti-harakatlariga ta'sir qiladi. Misol uchun, agar host nomi ulanish qatorida bo'lmasa, PostgreSQL moduli PGHOST muhit o'zgaruvchisini qidiradi. Qo'llab-quvvatlanadigan muhit o'zgaruvchilari versiyalar orasida farq qiladi. Tafsilotlar uchun PostgreSQL dasturchi qo'llanmasiga (libpq - Environment Variables) qarang.

Tegishli foydalanuvchi uchun muhit o'zgaruvchilarini o'rnatganingizga ishonch hosil qiling. $_ENV yoki foydalaning getenv() joriy jarayon uchun qaysi muhit o'zgaruvchilari mavjudligini tekshirish.

PostgreSQL 7.1.0 dan boshlab, matn maydonida 1 GB saqlashingiz mumkin. Eski versiyalarda blok hajmi cheklovlari bo'lishi mumkin (standart 8KB, maksimal 32KB, kompilyatsiya vaqtida aniqlangan).

Katta ob'ekt (lo) interfeysidan foydalanish uchun siz tranzaksiya blokiga lo funktsiyalarini kiritishingiz kerak. Tranzaksiya bloki SQL bayonoti bilan boshlanadi BOSHLANISHI, va agar tranzaksiya to'g'ri bo'lsa, tugaydi MAVJAT QILING yoki OXIRI. Agar tranzaktsiya bajarilmasa, u bilan yopilishi kerak ORTAGA OLISH yoki BORTISH.

Katta ob'ektni yopishdan oldin PostgreSQL serveriga ulanishni yopmasligingiz kerak.

Tarkib PG_FAFADEDED_ROWS - ASY_CANCELL_KOSTING - PG_CONNECT_BUSEY-ni qabul qiladi yoki pg_connsection_busy-ni qabul qiladi ulanish (qayta ulanish) pg_connection_status - ulanish holatini oladi pg_convert - assotsiativ massiv qiymatini SQL bayonoti uchun mos qiymatga o'zgartiradi pg_copy_from - qatordan jadvalga yozuvlarni kiritadi pg_copy_to - jadvalni massivga ko'chiradi pg_db nomini oladi - ma'lumotlar bazasi nomini oladi. pg_delete - yozuvlarni o'chirib tashlaydi pg_end_copy - PostgreSQL backend bilan sinxronizatsiya qiladi pg_escape_bytea - bayt turi uchun /escape binarini mnemonizatsiya qiladi pg_escape_string - matn/char turi uchun satrni mnemonizatsiya qiladi pg_fetch_array - ob'ektni p_fetchev sifatida qayta tiklaydi. _natija - qiymatlarni qaytaradi olingan pg_fetch_row resursidan - qatorni sanab o'tiladigan massiv sifatida oladi pg_field_is_null - maydon mavjudligini tekshiradi NULL pg_field_name - maydon nomini qaytaradi pg_field_num - nomlangan maydon raqamini qaytaradi pg_field_prtlen - chop etish mumkin bo'lgan o'lchamni qaytaradi pg_field_size - nomli maydonning ichki xotira hajmini qaytaradi pg_field_type - tegishli maydon raqami uchun tur nomini qaytaradi

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_convert - Assotsiativ massiv qiymatlarini SQL so'rovlarida foydalanish uchun maqbul qiymatlarga aylantiradi

Tavsif

pg_convert (resurs $ ulanish , string $jadval_nomi , massiv $assoc_array [, int $options = 0]): massiv

pg_convert() assoc_array dan qiymatlarni tekshiradi va SQL serveri uchun maqbul qiymatlarga aylantiradi. Jadvalning_nomi mavjud bo'lishi kerak va undagi ustunlar soni assoc_array massividagi qiymatlardan kam bo'lmasligi kerak. table_name jadvalidagi ustun nomlari assoc_array massivining kalitlariga mos kelishi kerak va massiv qiymatlarining ma'lumotlar turlari ham tegishli ustunlarning ma'lumotlar turlariga mos kelishi kerak. Agar konvertatsiya muvaffaqiyatli bo'lsa, funktsiya aylantirilgan qiymatlar qatorini qaytaradi, aks holda qaytaradi FALSE.

Izoh:

PHP 5.6.0 dan boshlab mantiqiy qiymatlarga ruxsat beriladi. Ular PostgreSQL boolean turiga aylantiriladi. Boolean qiymatning satrli ko'rinishlari ham qo'llab-quvvatlanadi. NULL PostgreSQL NULL ga aylantiriladi.

PHP 5.6.0 dan oldin jadval_nomi mantiqiy maydonlarni o'z ichiga olgan bo'lsa, doimiydan foydalanmang TO'G'RI ushbu maydonlar uchun table_name massivining qiymati sifatida. U PostgreSQL-dagi mantiqiy maydonlar uchun yaroqsiz qiymat bo'lgan "TRUE" qatoriga aylantiriladi. "T", "true", "1", "y", "ha" qiymatlaridan foydalaning.

Parametrlar ro'yxati

PostgreSQL ma'lumotlar bazasiga ulanish resursi.

Jadval_nomi

Ma'lumotlar bazasi jadvali nomi.

Assoc_array

Konvertatsiya qilish uchun ma'lumotlar.

Variantlar

Konstantalardan biri PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULL yoki PGSQL_CONV_IGNORE_NOT_NULL, yoki ularning kombinatsiyasi.

Qaytish qiymatlari

massiv( massiv), o'zgartirilgan ma'lumotlarni o'z ichiga olgan yoki FALSE xato bo'lsa.

Misollar

1-misol Foydalanish misoli pg_convert()

$dbconn = pg_connect ("dbname=foo");

$tmp = massiv(
"author" => "Jo Tekkeri" ,
"yil" => 2005,
"title" => "Mening hayotim, Jo Tekkeri"
);

$vals = pg_convert ($dbconn, "mualliflar", $tmp);
?>