PostgreSQL գործառույթները. LXXX. PostgreSQL-ի առանձնահատկությունները տվյալների բազայի չափը

Ստանդարտ ձևանմուշների գրադարան (Ստանդարտ կաղապարների գրադարան , STL) ներառված է C++ լեզվի ստանդարտ գրադարանում։ Այն ներառում է առավել հաճախ օգտագործվող կոնտեյներների և ալգորիթմների իրականացում, ինչը ծրագրավորողներին փրկում է դրանք նորից ու նորից վերագրելու առօրյայից: Կոնտեյներներ և դրանց վրա կիրառվող ալգորիթմներ մշակելիս (օրինակ՝ նույնական տարրերի հեռացում, տեսակավորում, որոնում և այլն), հաճախ պետք է զոհաբերել կամ բազմակողմանիությունը կամ կատարողականությունը: Այնուամենայնիվ, STL մշակողները խնդիր են դրել գրադարանը դարձնել արդյունավետ և ունիվերսալ: Այս խնդիրը լուծելու համար օգտագործվել են C++ լեզվի այնպիսի ունիվերսալ միջոցներ, ինչպիսիք են կաղապարները և օպերատորների գերբեռնումը։ Հետևյալ ներկայացման մեջ մենք կհիմնվենք Microsoft-ի կողմից տրամադրված STL ներդրման վրա Visual C++ 6.0 կոմպիլյատորի հետ միասին: Այնուամենայնիվ, վերը նշվածների մեծ մասը ճիշտ կլինի նաև այլ կոմպիլյատորների կողմից STL իրականացումների համար:

STL-ում հիմնական հասկացությունները կոնտեյներ (կոնտեյներ), ալգորիթմ (ալգորիթմ) և կրկնող (իտերատոր) հասկացություններն են։

Կոնտեյներօբյեկտների պահեստ է (ինչպես ներկառուցված, այնպես էլ օգտագործողի կողմից սահմանված տեսակներ): Սովորաբար, կոնտեյներներն իրականացվում են որպես դասի կաղապարներ: Կոնտեյներների ամենապարզ տեսակները (ստատիկ և դինամիկ զանգվածներ) ուղղակիորեն ներկառուցված են C++ լեզվի մեջ։ Բացի այդ, ստանդարտ գրադարանը ներառում է բեռնարկղերի իրականացում, ինչպիսիք են վեկտորը, ցուցակը, հերթը, քարտեզը, հավաքածուն և մի քանիսը:

Ալգորիթմբեռնարկղում պարունակվող առարկաների մանիպուլյացիայի գործառույթ է: Ալգորիթմների բնորոշ օրինակներն են տեսակավորումը և որոնումը: STL-ն իրականացնում է մոտ 60 ալգորիթմ, որոնք կարող են կիրառվել տարբեր կոնտեյներների վրա, ներառյալ C++ լեզվի մեջ ներկառուցված զանգվածները:

Իտերատորցուցիչի աբստրակցիա է, այսինքն՝ օբյեկտ, որը կարող է վերաբերել կոնտեյների մեջ պարունակվող այլ օբյեկտներին։ Իտերատորի հիմնական գործառույթներն են՝ հասանելիություն ապահովել այն օբյեկտին, որին նա վերաբերում է (անջատում) և տեղափոխել կոնտեյների մեկ տարր մյուսը (իտերացիա, հետևաբար՝ կրկնող անվանումը): Ներկառուցված բեռնարկղերի համար սովորական ցուցիչները օգտագործվում են որպես կրկնողներ: Ավելի բարդ կոնտեյներների դեպքում իտերատորներն իրականացվում են որպես դասեր՝ գերբեռնված օպերատորների հավաքածուով։

Բացի STL-ում նշված տարրերից, կան մի շարք օժանդակ հասկացություններ ; Դուք նաև պետք է ծանոթանաք դրանցից մի քանիսին:

Հատկացնող(բաշխիչ) օբյեկտ է, որը պատասխանատու է կոնտեյների տարրերի համար հիշողություն հատկացնելու համար: Յուրաքանչյուր ստանդարտ կոնտեյների հետ կապված է հատկացուցիչը (նրա տեսակը փոխանցվում է որպես կաղապարի պարամետրերից մեկը): Եթե ​​ինչ-որ ալգորիթմ պետք է հիշողություն հատկացնի տարրերի համար, այն պետք է դա անի բաշխիչի միջոցով: Այս դեպքում կարող եք վստահ լինել, որ բաշխված օբյեկտները ճիշտ կկործանվեն։

STL-ն ներառում է ստանդարտ հատկացնող դաս (նկարագրված է xmemory ֆայլում): Սա այն է, ինչ լռելյայն օգտագործում են STL-ում ներդրված բոլոր կոնտեյներները: Այնուամենայնիվ, օգտվողը կարող է իրականացնել իր սեփական դասը: Սա շատ հազվադեպ է անհրաժեշտ, բայց երբեմն կարող է արվել արդյունավետության կամ վրիպազերծման նպատակով:

Եկեք ավելի մանրամասն անդրադառնանք ներկայացված հասկացությունների քննարկմանը:

Տարաներ . Յուրաքանչյուր կոնտեյներ ապահովում է խիստ սահմանված ինտերֆեյս, որի միջոցով ալգորիթմները կփոխազդեն դրա հետ: Կոնտեյների հատուկ կրկնողներն ապահովում են այս ինտերֆեյսը: Կարևոր է ընդգծել, որ ոչ մի լրացուցիչ անդամ ֆունկցիա չի օգտագործվում ալգորիթմների և բեռնարկղերի միջև փոխազդեցության համար: Դա արվում է, քանի որ ստանդարտ ալգորիթմները պետք է աշխատեն, ներառյալ C++ լեզվի ներկառուցված կոնտեյներները, որոնք ունեն կրկնողներ (ցուցիչներ), բայց ուրիշ ոչինչ: Այսպիսով, երբ ստեղծում եք ձեր սեփական կոնտեյները, իտերատորի ներդրումը նվազագույնն է:

Յուրաքանչյուր կոնտեյներ իրականացնում է որոշակի տեսակի կրկնող: Սա ընտրում է ամենաֆունկցիոնալ կրկնվող տիպը, որը կարող է արդյունավետ կերպով իրականացվել տվյալ կոնտեյների համար: «Արդյունավետ» նշանակում է, որ իտերատորի վրա գործողություններ կատարելու արագությունը չպետք է կախված լինի տարայի տարրերի քանակից: Օրինակ, վեկտորի համար իրականացվում է պատահական մուտքի կրկնող, իսկ ցուցակի համար՝ երկկողմանի կրկնող: Քանի որ ցուցակի գործողության արագությունը գծային է իր երկարությամբ, ցուցակի համար պատահական մուտքի կրկնողություն չի իրականացվում:

Անկախ տարայի փաստացի կազմակերպումից (վեկտոր, ցուցակ, ծառ), դրանում պահվող տարրերը կարելի է դիտարկել որպես հաջորդականություն։ Այս հաջորդականության առաջին տարրի կրկնիչը վերադարձվում է begin() ֆունկցիայով, իսկ վերջինին հաջորդող տարրի կրկնիչը՝ end() ֆունկցիայով։ Սա շատ կարևոր է, քանի որ STL-ի բոլոր ալգորիթմներն աշխատում են հենց սկզբի և վերջի կրկնիչների կողմից սահմանված հաջորդականությամբ:

Բացի STL-ում սովորական կրկնողներից, կան հակադարձ կրկնողներ (հակադարձ կրկնող ) Հակադարձ կրկնիչը տարբերվում է նրանով, որ այն կրկնվում է տարայի տարրերի հաջորդականության միջոցով՝ հակառակ հերթականությամբ: Այլ կերպ ասած, + և - գործողությունները հակադարձվում են: Սա թույլ է տալիս ալգորիթմները կիրառել տարրերի ինչպես ուղղակի, այնպես էլ հակադարձ հաջորդականությունների վրա: Օրինակ, օգտագործելով Find ֆունկցիան, կարող եք տարրեր որոնել կոնտեյների ինչպես «սկիզբից», այնպես էլ «վերջից»:

STL-ում բեռնարկղերը բաժանվում են երեք հիմնական խմբերի (Աղյուսակ 2)՝ հաջորդական բեռնարկղեր, ասոցիատիվ բեռնարկղեր և կոնտեյներային ադապտերներ: Առաջին երկու խմբերը միավորվում են առաջին կարգի տարաների մեջ:

աղյուսակ 2

Կոնտեյներների դաս STL

Նկարագրություն

Հերթական տարաներ

վեկտոր

Դինամիկ զանգված

դեկե

Երկկողմանի հերթ

ցուցակը

Երկկողմանի գծային ցուցակ

Ասոցիատիվ կոնտեյներներ

Ասոցիատիվ կոնտեյներ եզակի բանալիներով

բազմաշերտ

Ասոցիատիվ կոնտեյներ, որը թույլ է տալիս կրկնօրինակ բանալիներ

Ասոցիատիվ կոնտեյներ եզակի տարրերի հավաքածուների համար

բազմաքարտեզ

Ասոցիատիվ կոնտեյներ կրկնօրինակ տարրերով հավաքածուների համար

Կոնտեյների ադապտերներ

բուրգ

Ստանդարտ բուրգ

հերթ

Ստանդարտ հերթ

առաջնահերթություն_հերթ

Առաջնահերթ հերթ

Յուրաքանչյուր կոնտեյների դաս ներդրված է STL , նկարագրում է տարայի հետ կապված տեսակների հավաքածուն։ Դուք պետք է հետևեք այս նույն գործելակերպին, երբ գրում եք ձեր սեփական բեռնարկղերը: Ահա ամենակարևոր տեսակների ցանկը.

value_type - տարրի տեսակ;

չափի_տեսակ - տարրերի քանակի պահպանման տեսակ (սովորաբարչափ_տ);

կրկնող - կոնտեյների տարրերի կրկնիչ;

բանալին_տեսակ - բանալի տեսակը (ասոցիատիվ կոնտեյներով):

Բացի տեսակներից, մենք կարող ենք տարբերակել մի շարք գործառույթներ, որոնք իրականացնում է STL-ի գրեթե յուրաքանչյուր կոնտեյներ (Աղյուսակ 3): Դրանք չեն պահանջվում ալգորիթմների հետ փոխազդեցության համար, սակայն դրանց իրականացումը բարելավում է ծրագրում բեռնարկղերի փոխանակելիությունը: STL-ը նախագծված է այնպես, որ բեռնարկղերն ապահովեն նմանատիպ գործառույթ:

Աղյուսակ 3

Բոլոր STL տարաների ընդհանուր մեթոդները

Նկարագրություն

լռելյայն կոնստրուկտոր

Կանխադրված կոնստրուկտոր: Սովորաբար կոնտեյները ունի մի քանիսըդիզայներներ

պատճենի կոնստրուկտոր

Պատճենահանող կոնստրուկտոր

կործանիչ

Կործանարար

դատարկ

Վերադարձնում է true, եթե տարայի մեջ տարրեր չկան, հակառակ դեպքում՝ false

max_size

Վերադարձնում է տարայի համար տարրերի առավելագույն քանակը

չափը

Վերադարձնում է տարայի տարրերի քանակը ընթացիկ պահին

օպերատոր =

Մեկ բեռնարկղը վերագրում է մյուսին

օպերատոր<

Վերադարձնում է true, եթե առաջին բեռնարկղը երկրորդից փոքր է, հակառակ դեպքում՝ false

օպերատոր<=

Վերադարձնում է true, եթե առաջին բեռնարկղը երկրորդից մեծ չէ, հակառակ դեպքում՝ false

օպերատոր >

Վերադարձնում է true, եթե առաջին բեռնարկղը մեծ է երկրորդից, հակառակ դեպքում՝ false

օպերատոր >=

Վերադարձնում է true, եթե առաջին բեռնարկղը երկրորդից փոքր չէ, հակառակ դեպքում՝ false

օպերատոր ==

Վերադարձնում է true, եթե համեմատվող տարաները հավասար են, հակառակ դեպքում՝ false

օպերատոր !=

Վերադարձնում է true, եթե համեմատվող տարաները հավասար չեն, հակառակ դեպքում՝ false

փոխանակում

Փոխում է երկու տարաների տարրերը

Հատկանիշները հասանելի են միայն առաջին կարգի տարաներում

սկսել

Այս ֆունկցիայի երկու տարբերակները վերադարձնում են կամ iterator կամ const_iterator, որը վերաբերում է կոնտեյների առաջին տարրին

Այս ֆունկցիայի երկու տարբերակները վերադարձնում են կամ iterator կամ const_iterator, որը վերաբերում է հաջորդ դիրքին կոնտեյների ավարտից հետո:

րբեգին

Այս ֆունկցիայի երկու տարբերակ կամ վերադառնում է reverse_iterator կամ reverse_const_iterator , որը վերաբերում է տարայի վերջին տարրին

պատռել

Այս ֆունկցիայի երկու տարբերակները վերադարձնում են կամ reverse_iterator կամ reverse_const_iterator, որը վերաբերում է բեռնարկղի առաջին տարրի առաջ գտնվող դիրքին:

տեղադրել, ջնջել,

Թույլ է տալիս տեղադրել կամ հեռացնել տարր(ներ)ը հաջորդականության մեջտեղում

Վերջնական աղյուսակ 3

պարզ

Հեռացնում է բոլոր տարրերը կոնտեյներից

առջև, հետև

push_back, pop_back

Թույլ է տալիս հաջորդականությամբ ավելացնել կամ հեռացնել վերջին տարրը

push_front, pop_front

Թույլ է տալիս հաջորդականությամբ ավելացնել կամ հեռացնել առաջին տարրը

Իտերատորները սովորաբար ստեղծվում են որպես դասերի ընկերներ, որոնցով նրանք աշխատում են, ինչը թույլ է տալիս ուղղակիորեն մուտք գործել այդ դասերի անձնական տվյալները: Մեկ բեռնարկղը կարող է ունենալ իր հետ կապված մի քանի կրկնողներ, որոնցից յուրաքանչյուրը պահպանում է իր «դիրքային տեղեկատվությունը» (Աղյուսակ 4):

Աղյուսակ 4

Iterator տեսակը

Մուտք

Անհղում

Կրկնություն

Համեմատություն

Արդյունք կրկնող

(ելքային կրկնող)

Միայն ձայնագրում

Ներածման կրկնող

(մուտքագրման կրկնող)

Միայն կարդալով

*, ->

==, !=

Առաջ կրկնող

(առաջ կրկնող)

Կարդալ եւ գրել

*, ->

==, !=

Երկկողմանի կրկնող(երկկողմանի կրկնող)

Կարդալ եւ գրել

*, ->

++, --

==, !=

Պատահական մուտքի կրկնող

(պատահական - մուտքի կրկնող)

Կարդալ եւ գրել

*, ->,

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

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

pg_update (ռեսուրս $կապ , տող $table_name , զանգված $data , զանգված $պայման [, int $options = PGSQL_DML_EXEC ])

pg_update ()փոխարինում է աղյուսակի այն գրառումները, որոնք համապատասխանում են պայմաններին վիճակտվյալները տվյալները. Եթե ​​բերվի փաստարկ տարբերակները, տվյալները կփոխակերպվեն ֆունկցիայի կողմից pg_convert (), որին կփոխանցվեն այս արգումենտի պարամետրերը:

Պարամետրերի ցանկ

PostgreSQL տվյալների բազայի միացման ռեսուրս:

Աղյուսակի_անուն

Աղյուսակի անվանումը, որում թարմացվում են գրառումները:

Զանգված ( զանգված), որոնց ստեղները համապատասխանում են table_name աղյուսակի սյունակների անուններին, և արժեքները կփոխարինեն այս սյունակների տվյալները:

Վիճակ

Զանգված ( զանգված), որի ստեղները համապատասխանում են աղյուսակի սյունակների անվանումներին table_name ։ Կթարմացվեն միայն այն տողերը, որոնց դաշտի արժեքները համապատասխանում են զանգվածի արժեքներին:

Ընտրանքներ

հաստատուններից մեկը PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNCկամ PGSQL_DML_STRING, կամ դրանց համակցությունը։ Եթե ​​ընտրանքները պարունակում են PGSQL_DML_STRING, ֆունկցիան կվերադարձնի տող: Եթե ​​տեղադրված է PGSQL_DML_NO_CONVկամ PGSQL_DML_ESCAPE, ապա ֆունկցիան pg_convert ()Ներքին կանչված չէ:

Վերադարձի արժեքներ

Վերադարձնում է ՃԻՇՏհաջող ավարտից հետո կամ ՍՈՒՏսխալի դեպքում. Ֆունկցիան կվերադարձնի տողը ( լար), եթե հաստատուն է PGSQL_DML_STRINGպարունակվող տարբերակներում:

Օրինակներ

Օրինակ #1 Օգտագործման օրինակ pg_update ()

$db = pg_connect("dbname=foo");
$data = array("field1" => "AA" , "field2" => "BB" );

// Սա անվտանգ է, քանի որ $_POST-ը ավտոմատ կերպով փոխարկվում է
$res = pg_update ($db, «post_log», $_POST, $data);
եթե ($res) (
արձագանք «Տվյալները թարմացվել են.$res\n" ;
) ուրիշ (
արձագանք «Անվավեր տվյալներ պետք է ուղարկված լինեն\n»;
}
?>

pg_update (ռեսուրս $կապ , տող $table_name , զանգված $data , զանգված $պայման [, int $options = PGSQL_DML_EXEC ])

pg_update ()փոխարինում է աղյուսակի այն գրառումները, որոնք համապատասխանում են պայմաններին վիճակտվյալները տվյալները. Եթե ​​բերվի փաստարկ տարբերակները, տվյալները կփոխակերպվեն ֆունկցիայի կողմից pg_convert (), որին կփոխանցվեն այս արգումենտի պարամետրերը:

Պարամետրերի ցանկ

PostgreSQL տվյալների բազայի միացման ռեսուրս:

Աղյուսակի_անուն

Աղյուսակի անվանումը, որում թարմացվում են գրառումները:

Զանգված ( զանգված), որոնց ստեղները համապատասխանում են table_name աղյուսակի սյունակների անուններին, և արժեքները կփոխարինեն այս սյունակների տվյալները:

Վիճակ

Զանգված ( զանգված), որի ստեղները համապատասխանում են աղյուսակի սյունակների անվանումներին table_name ։ Կթարմացվեն միայն այն տողերը, որոնց դաշտի արժեքները համապատասխանում են զանգվածի արժեքներին:

Ընտրանքներ

հաստատուններից մեկը PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNCկամ PGSQL_DML_STRING, կամ դրանց համակցությունը։ Եթե ​​ընտրանքները պարունակում են PGSQL_DML_STRING, ֆունկցիան կվերադարձնի տող: Եթե ​​տեղադրված է PGSQL_DML_NO_CONVկամ PGSQL_DML_ESCAPE, ապա ֆունկցիան pg_convert ()Ներքին կանչված չէ:

Վերադարձի արժեքներ

Վերադարձնում է ՃԻՇՏհաջող ավարտից հետո կամ ՍՈՒՏսխալի դեպքում. Ֆունկցիան կվերադարձնի տողը ( լար), եթե հաստատուն է PGSQL_DML_STRINGպարունակվող տարբերակներում:

Օրինակներ

Օրինակ #1 Օգտագործման օրինակ pg_update ()

$db = pg_connect("dbname=foo");
$data = array("field1" => "AA" , "field2" => "BB" );

// Սա անվտանգ է, քանի որ $_POST-ը ավտոմատ կերպով փոխարկվում է
$res = pg_update ($db, «post_log», $_POST, $data);
եթե ($res) (
արձագանք «Տվյալները թարմացվել են.$res\n" ;
) ուրիշ (
արձագանք «Անվավեր տվյալներ պետք է ուղարկված լինեն\n»;
}
?>

Postgres-ը, որն ի սկզբանե մշակվել էր UC Berkeley Համակարգչային գիտության դեպարտամենտի կողմից, առաջնահերթ է եղել օբյեկտի վրա հիմնված շատ հասկացությունների, որոնք այժմ հասանելի են որոշ առևտրային տվյալների բազաներում: Այն ապահովում է SQL92/SQL99 լեզվի աջակցություն, գործարքների ամբողջականություն և տիպի ընդարձակելիություն: PostgreSQL-ը Բերքլիի բնօրինակ կոդի բաց կոդով հետնորդն է:

PostgreSQL-ն անվճար հասանելի արտադրանք է: PostgreSQL աջակցությունն օգտագործելու համար ձեզ հարկավոր է PostgreSQL 6.5 կամ ավելի նոր տարբերակ: PostgreSQL 7.0 կամ ավելի ուշ՝ PostgreSQL մոդուլի բոլոր հնարավորությունների համար: PostgreSQL-ն աջակցում է բազմաթիվ նիշերի կոդավորումներին, ներառյալ բազմաբայթ նիշերի կոդավորումը: Ընթացիկ տարբերակը և տեղեկատվությունը PostgreSQL-ի մասին կարելի է գտնել http://www.postgresql.org/ կայքում:

PostgreSQL-ի աջակցությունը միացնելու համար PHP-ն կազմելիս անհրաժեշտ է --with-pgsql[=DIR] տարբերակը: Եթե ​​ընդհանուր օբյեկտների մոդուլը հասանելի է, PostgreSQL մոդուլը կարող է բեռնվել՝ օգտագործելով php.ini ֆայլի ընդլայնման հրահանգը կամ գործառույթը: dl (). Աջակցվող ini հրահանգները նկարագրված են php.ini-dist ֆայլում, որը տրամադրվում է բաշխման աղբյուրի կոդով:

Աղյուսակ 1.Ֆունկցիայի անվանումը փոխվում է
Հին անունՆոր անուն
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_locose () pg_lo_close ()
pg_loread () pg_lo_read ()
pg_lowrite () pg_lo_write ()
pg_loimport () pg_lo_import ()
pg_loexport () pg_lo_export ()

Ոչ բոլոր հնարավորություններն են աջակցվում բոլոր կառուցումներում: Սա կախված է ձեր libpq-ի տարբերակից (The PostgreSQL C Client ինտերֆեյս) և ինչպես է կազմվում libpq-ը: Եթե ​​կա բացակայող ֆունկցիա, libpq-ը չի ապահովում այդ ֆունկցիայի պահանջվող հնարավորությունները:

Կարևոր է նաև, որ դուք օգտագործում եք libpq, որն ավելի նոր է, քան PostgreSQL սերվերը, որին միանում եք: Եթե ​​դուք օգտագործում եք libpq, որն ավելի հին է, քան ակնկալում է PostgreSQL Server-ը, դուք խնդիրներ կունենաք:

Սկսած 6.3 տարբերակից (02/03/1998), PostgreSQL-ը լռելյայն օգտագործում է unix տիրույթի վարդակից: TCP պորտը լռելյայն ՉԻ բացված: Աղյուսակը նկարագրում է կապի այս նոր տարբերակները: Այս վարդակից կարելի է գտնել /tmp/.s.PGSQL.5432-ում: Այս տարբերակը կարող է միացված լինել «-i» դրոշակով փոստատար, և դրա արժեքը կլինի՝ «լսել TCP/IP վարդակներ, ինչպես նաև Unix տիրույթի վարդակներ»:

Աղյուսակ 2. Postmaster և PHP

PostgreSQL սերվերի հետ կապը կարող է հաստատվել հրամանի տողում հետևյալ զույգ արժեքներով. $conn = pg_connect ("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword");

Նախորդ շարահյուսություն. $conn = pg_connect («հյուրընկալող», «պորտ», «ընտրանքներ», «tty», «dbname»)այլևս խորհուրդ չի տրվում:

Շրջակա միջավայրի փոփոխականները ազդում են PostgreSQL սերվերի/հաճախորդի վարքագծի վրա: Օրինակ, PostgreSQL մոդուլը կփնտրի PGHOST միջավայրի փոփոխականը, եթե հոսթի անունը չկա կապի տողում: Աջակցվող միջավայրի փոփոխականները տարբերվում են տարբերակներից: Մանրամասների համար տե՛ս PostgreSQL ծրագրավորողի ձեռնարկը (libpq - Environment Variables):

Համոզվեք, որ սահմանել եք շրջակա միջավայրի փոփոխականները համապատասխան օգտագործողի համար: Օգտագործեք $_ENV կամ getenv ()ստուգելու, թե որ միջավայրի փոփոխականներն են հասանելի ընթացիկ գործընթացին:

Սկսած PostgreSQL 7.1.0-ից՝ կարող եք 1 ԳԲ պահել տեքստային դաշտում: Ավելի հին տարբերակները կարող են ունենալ բլոկի չափի սահմանափակումներ (կանխադրվածը եղել է 8 ԿԲ, առավելագույնը՝ 32 ԿԲ, որը որոշվել է կոմպիլյացիայի ժամանակ):

Խոշոր օբյեկտի (lo) ինտերֆեյսը օգտագործելու համար դուք պետք է ներառեք lo գործառույթները գործարքի բլոկի ներսում: Գործարքի բլոկը սկսվում է SQL հայտարարությամբ ՍԿՍԵԼ, և եթե գործարքը ճիշտ էր, ավարտվում է ՊԱՀԱՆՋԵԼկամ ՎԵՐՋ. Եթե ​​գործարքը ձախողվի, այն պետք է փակվի ՎԵՐԱԴԱՐՁկամ վիժեցնել.

Դուք չպետք է փակեք կապը PostgreSQL սերվերի հետ մեծ օբյեկտը փակելուց առաջ:

Բովանդակություն pg_affeded_rows - վերադարձնում է ներգրավված գրառումների քանակը (steam/tuples) pg_cancel_query - չեղարկում է համաժամացման հարցումը pg_client_encoding - ստանում է հաճախորդի կոդավորումը pg_close - փակում է postgreSQL կապը PG_ConNNECT - բացում է posteg Rescl կապը փակված է, թե արդյոք PG_ConNECT Rescl կապը փակված չէ է կապ (վերամիացում) pg_connection_status - ստանում է կապի կարգավիճակ pg_convert - փոխակերպում է ասոցիատիվ զանգվածի արժեքը SQL հայտարարության համար հարմար արժեքի pg_copy_from - տեղադրում է գրառումները աղյուսակում pg_copy_to զանգվածից - աղյուսակը պատճենում է զանգվածի մեջ pg_dbname - ստանում է տվյալների բազայի անունը pg_delete - ջնջում է գրառումները pg_end_copy - համաժամացնում է PostgreSQL backend-ի հետ pg_escape_bytea - հիշել է /escape երկուական բայթի տեսակի համար pg_escape_string - հիշել տողը տեքստի տիպի համար/char pg_fetch_array - առբերում է pg_fetch_array տողը - առբերում է pg_fetch_array տողը - առբերում է մի տող, որպես ar_revetch, որպես array_arres. ult - վերադարձնում է արժեքներ ստացված ռեսուրսից pg_fetch_row - առբերում է տողը որպես հաշվելի զանգված pg_field_is_null - ստուգում է արդյոք դաշտը ԴԱՏԱՐԿ pg_field_name - վերադարձնում է դաշտի անունը pg_field_num - վերադարձնում է անվանված դաշտի համարը pg_field_prtlen - վերադարձնում է տպելի չափը pg_field_size - վերադարձնում է անվանված դաշտի ներքին պահեստի չափը pg_field_type - վերադարձնում է տիպի անունը համապատասխան դաշտի համարի համար:

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

pg_convert — Փոխակերպում է ասոցիատիվ զանգվածի արժեքները ընդունելի արժեքների՝ SQL հարցումներում օգտագործելու համար

Նկարագրություն

pg_convert (ռեսուրս $կապ , տող $table_name , զանգված $assoc_array [, int $ Options = 0]) : զանգված

pg_convert ()ստուգում և փոխակերպում է արժեքները assoc_array-ից SQL սերվերի համար ընդունելի արժեքների: Աղյուսակի table_name-ը պետք է գոյություն ունենա, և դրանում սյունակների քանակը չպետք է պակաս լինի assoc_array զանգվածի արժեքներից: Table_name աղյուսակում սյունակների անունները պետք է համապատասխանեն assoc_array զանգվածի ստեղներին, իսկ զանգվածի արժեքների տվյալների տեսակները պետք է համապատասխանեն նաև համապատասխան սյունակների տվյալների տեսակներին: Եթե ​​փոխակերպումը հաջող է, ֆունկցիան վերադարձնում է փոխարկված արժեքների զանգված, հակառակ դեպքում՝ այն վերադառնում է ՍՈՒՏ.

Մեկնաբանություն:

PHP 5.6.0-ի դրությամբ թույլատրվում են բուլյան արժեքներ: Դրանք փոխարկվում են PostgreSQL բուլյան տիպի: Աջակցվում են նաև բուլյան արժեքի լարային ներկայացումներ: ԴԱՏԱՐԿփոխակերպվում է PostgreSQL NULL-ի:

Մինչև PHP 5.6.0, եթե աղյուսակի աղյուսակի անունը պարունակում է բուլյան դաշտեր, մի օգտագործեք հաստատուն ՃԻՇՏորպես table_name զանգվածի արժեք այս դաշտերի համար: Այն կվերածվի «TRUE» տողի, որն անվավեր արժեք է PostgreSQL-ի բուլյան դաշտերի համար: Օգտագործեք «t», «true», «1», «y», «yes» արժեքները:

Պարամետրերի ցանկ

PostgreSQL տվյալների բազայի միացման ռեսուրս:

Աղյուսակի_անուն

Տվյալների բազայի աղյուսակի անվանումը.

Assoc_array

Տվյալներ փոխարկելու համար:

Ընտրանքներ

հաստատուններից մեկը PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULLկամ PGSQL_CONV_IGNORE_NOT_NULL, կամ դրանց համակցությունը։

Վերադարձի արժեքներ

Զանգված ( զանգված), որը պարունակում է փոխարկված տվյալները, կամ ՍՈՒՏսխալի դեպքում.

Օրինակներ

Օրինակ #1 Օգտագործման օրինակ pg_convert ()

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

$tmp = զանգված (
"author" => "Joe Thackery" ,
«տարի» => 2005 թ.
"title" => «Իմ կյանքը, Ջո Թեքերի»
);

$vals = pg_convert ($dbconn, «հեղինակներ», $tmp);
?>