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 ()փոխարինում է աղյուսակի այն գրառումները, որոնք համապատասխանում են պայմաններին վիճակտվյալները տվյալները. Եթե բերվի փաստարկ տարբերակները, տվյալները կփոխակերպվեն ֆունկցիայի կողմից 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 ()փոխարինում է աղյուսակի այն գրառումները, որոնք համապատասխանում են պայմաններին վիճակտվյալները տվյալները. Եթե բերվի փաստարկ տարբերակները, տվյալները կփոխակերպվեն ֆունկցիայի կողմից 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);
?>