PostgreSQL ფუნქციები. LXXX. PostgreSQL მახასიათებლები მონაცემთა ბაზის ზომა

სტანდარტული შაბლონის ბიბლიოთეკა (სტანდარტული შაბლონის ბიბლიოთეკა , STL) შედის C++ ენის სტანდარტულ ბიბლიოთეკაში. იგი მოიცავს ყველაზე ხშირად გამოყენებული კონტეინერების და ალგორითმების იმპლემენტაციას, რაც იცავს პროგრამისტებს მათი ხელახლა გადაწერისგან. კონტეინერების და მათზე გამოყენებული ალგორითმების შემუშავებისას (როგორიცაა იდენტური ელემენტების ამოღება, დახარისხება, ძიება და ა.შ.), ხშირად უნდა შეიწიროს მრავალმხრივობა ან შესრულება. თუმცა, STL-ის დეველოპერებმა დაავალეს, რომ ბიბლიოთეკა ეფექტური და უნივერსალური გახადონ. ამ პრობლემის გადასაჭრელად გამოიყენეს C++ ენის ისეთი უნივერსალური საშუალებები, როგორიცაა შაბლონები და ოპერატორის გადატვირთვა. შემდეგ პრეზენტაციაში ჩვენ დავეყრდნობით Microsoft-ის მიერ მოწოდებულ STL განხორციელებას Visual C++ 6.0 კომპილატორთან ერთად. თუმცა, ზემოაღნიშნულის უმეტესობა ასევე მართებულია სხვა შემდგენელების მიერ STL განხორციელებისთვის.

STL-ში ძირითადი ცნებებია კონტეინერის (კონტეინერის), ალგორითმის (ალგორითმი) და იტერატორის (იტერატორი) ცნებები.

კონტეინერიარის ობიექტების საცავი (როგორც ჩაშენებული, ასევე მომხმარებლის მიერ განსაზღვრული ტიპები). როგორც წესი, კონტეინერები დანერგილია როგორც კლასის შაბლონები. კონტეინერების უმარტივესი ტიპები (სტატიკური და დინამიური მასივები) ჩაშენებულია პირდაპირ C++ ენაში. გარდა ამისა, სტანდარტული ბიბლიოთეკა მოიცავს კონტეინერების იმპლემენტაციას, როგორიცაა ვექტორი, სია, რიგი, რუკა, ნაკრები და სხვა.

ალგორითმიარის კონტეინერში შემავალი ობიექტების მანიპულირების ფუნქცია. ალგორითმების ტიპიური მაგალითებია დახარისხება და ძებნა. STL ახორციელებს დაახლოებით 60 ალგორითმს, რომლებიც შეიძლება გამოყენებულ იქნას სხვადასხვა კონტეინერებზე, C++ ენაში ჩაშენებული მასივების ჩათვლით.

იტერატორიარის მაჩვენებლის აბსტრაქცია, ანუ ობიექტი, რომელსაც შეუძლია მიუთითოს კონტეინერში შემავალი სხვა ობიექტები. იტერატორის ძირითადი ფუნქციებია უზრუნველყოს წვდომა იმ ობიექტზე, რომელსაც ის ეხება (გადაადგილება) და ერთი კონტეინერის ელემენტიდან მეორეზე გადასვლა (იტერაცია, აქედან გამომდინარე, სახელწოდება iterator). ჩაშენებული კონტეინერებისთვის რეგულარული მაჩვენებლები გამოიყენება როგორც იტერატორები. უფრო რთული კონტეინერების შემთხვევაში, იტერატორები დანერგილია როგორც კლასები გადატვირთული ოპერატორების ნაკრებით.

STL-ში მონიშნული ელემენტების გარდა არის რიგი დამხმარე ცნებები ; თქვენ ასევე უნდა გაეცნოთ ზოგიერთ მათგანს.

გამანაწილებელი(გამნაწილებელი) არის ობიექტი, რომელიც პასუხისმგებელია კონტეინერის ელემენტების მეხსიერების გამოყოფაზე. გამანაწილებელი ასოცირდება თითოეულ სტანდარტულ კონტეინერთან (მისი ტიპი გადადის შაბლონის ერთ-ერთ პარამეტრად). თუ რომელიმე ალგორითმს სჭირდება მეხსიერების გამოყოფა ელემენტებისთვის, მან ეს უნდა გააკეთოს ალოკატორის მეშვეობით. ამ შემთხვევაში, შეგიძლიათ დარწმუნებული იყოთ, რომ განაწილებული ობიექტები სწორად განადგურდება.

STL მოიცავს სტანდარტული განაწილების კლასს (აღწერილია xmemory ფაილში). ეს არის ის, რასაც ყველა კონტეინერი იყენებს STL-ში ნაგულისხმევად. თუმცა, მომხმარებელს შეუძლია საკუთარი კლასის განხორციელება. ეს ძალიან იშვიათად არის საჭირო, მაგრამ ზოგჯერ შეიძლება გაკეთდეს ეფექტურობის ან გამართვის მიზნით.

მოდით უფრო დეტალურად ვისაუბროთ შემოღებული ცნებების განხილვაზე.

კონტეინერები . თითოეული კონტეინერი უზრუნველყოფს მკაცრად განსაზღვრულ ინტერფეისს, რომლის მეშვეობითაც ალგორითმები ურთიერთქმედებენ მასთან. კონტეინერის სპეციფიკური გამეორებები უზრუნველყოფს ამ ინტერფეისს. მნიშვნელოვანია ხაზგასმით აღვნიშნოთ, რომ არ გამოიყენება წევრის დამატებითი ფუნქციები ალგორითმებსა და კონტეინერებს შორის ურთიერთქმედებისთვის. ეს კეთდება იმიტომ, რომ სტანდარტული ალგორითმები უნდა მუშაობდეს, მათ შორის C++ ენის ჩაშენებული კონტეინერები, რომლებსაც აქვთ იტერატორები (მაჩვენებლები), მაგრამ სხვა არაფერი. ამრიგად, საკუთარი კონტეინერის შექმნისას, იტერატორის დანერგვა მინიმალურია.

თითოეული კონტეინერი ახორციელებს კონკრეტული ტიპის იტერატორს. ეს ირჩევს ყველაზე ფუნქციონალურ იტერატორის ტიპს, რომელიც შეიძლება ეფექტურად განხორციელდეს მოცემული კონტეინერისთვის. „ეფექტური“ ნიშნავს, რომ იტერატორზე ოპერაციების შესრულების სიჩქარე არ უნდა იყოს დამოკიდებული კონტეინერში ელემენტების რაოდენობაზე. მაგალითად, შემთხვევითი წვდომის იტერატორი დანერგილია ვექტორისთვის, ხოლო ორმხრივი იტერატორი დანერგილია სიისთვის. იმის გამო, რომ სიის ოპერაციის სიჩქარე წრფივია მის სიგრძესთან, სიის შემთხვევითი წვდომის გამეორება არ არის დანერგილი.

კონტეინერის (ვექტორი, სია, ხე) რეალური ორგანიზაციის მიუხედავად, მასში შენახული ელემენტები შეიძლება ჩაითვალოს თანმიმდევრობად. ამ თანმიმდევრობის პირველი ელემენტის იტერატორი უბრუნდება start() ფუნქციით, ხოლო ელემენტის იტერატორი უკანასკნელის შემდეგ ბრუნდება end() ფუნქციით. ეს ძალიან მნიშვნელოვანია, რადგან ყველა ალგორითმი STL-ში მუშაობს ზუსტად იმ თანმიმდევრობით, რომლებიც მითითებულია საწყისი და დასასრული იტერატორების მიერ.

STL-ში რეგულარული იტერატორების გარდა, არსებობს საპირისპირო იტერატორები (საპირისპირო იტერატორი ). საპირისპირო იტერატორი განსხვავდება იმით, რომ ის მეორდება კონტეინერში ელემენტების თანმიმდევრობით საპირისპირო თანმიმდევრობით. სხვა სიტყვებით რომ ვთქვათ, ოპერაციები + და - შებრუნებულია. ეს საშუალებას აძლევს ალგორითმებს გამოიყენონ ელემენტების როგორც პირდაპირ, ისე საპირისპირო თანმიმდევრობებზე. მაგალითად, პოვნის ფუნქციის გამოყენებით, შეგიძლიათ მოძებნოთ ელემენტები კონტეინერის როგორც „დასაწყისიდან“ ასევე „ბოლოდან“.

STL-ში კონტეინერები იყოფა სამ ძირითად ჯგუფად (ცხრილი 2): თანმიმდევრული კონტეინერები, ასოციაციური კონტეინერები და კონტეინერის გადამყვანები. პირველი ორი ჯგუფი გაერთიანებულია პირველი კლასის კონტეინერებში.

მაგიდა 2

კონტეინერის კლასი STL

აღწერა

თანმიმდევრობით კონტეინერები

ვექტორი

დინამიური მასივი

დეკე

ორმხრივი რიგი

სია

ორმხრივი ხაზოვანი სია

ასოციაციური კონტეინერები

ასოციაციური კონტეინერი უნიკალური გასაღებებით

მრავალ კომპლექტი

ასოციაციური კონტეინერი გასაღებების დუბლიკატის საშუალებას იძლევა

ასოციაციური კონტეინერი უნიკალური ელემენტების ნაკრებისთვის

მრავალ რუკა

ასოციაციური კონტეინერი კომპლექტებისთვის დუბლიკატი ელემენტებით

კონტეინერის გადამყვანები

დასტის

სტანდარტული დასტა

რიგში

სტანდარტული რიგი

პრიორიტეტი_რიგი

პრიორიტეტული რიგი

თითოეული კონტეინერის კლასი დანერგილია STL , აღწერს კონტეინერთან დაკავშირებულ ტიპების ერთობლიობას. თქვენ უნდა მიჰყვეთ იგივე პრაქტიკას საკუთარი კონტეინერების დაწერისას. აქ მოცემულია ყველაზე მნიშვნელოვანი ტიპების სია:

ღირებულება_ტიპი - ელემენტის ტიპი;

ზომა_ტიპი - ტიპი ელემენტების რაოდენობის შესანახად (ჩვეულებრივზომა_ტ);

იტერატორი - იტერატორი კონტეინერის ელემენტებისთვის;

გასაღები_ტიპი - გასაღების ტიპი (ასოციაციურ კონტეინერში).

ტიპების გარდა, ჩვენ შეგვიძლია განვასხვავოთ ფუნქციების ნაკრები, რომელსაც ახორციელებს STL-ის თითქმის ყველა კონტეინერი (ცხრილი 3). ისინი არ არის საჭირო ალგორითმებთან ურთიერთობისთვის, მაგრამ მათი განხორციელება აუმჯობესებს პროგრამაში კონტეინერების ურთიერთშემცვლელობას. STL შექმნილია ისე, რომ კონტეინერებმა უზრუნველყოს მსგავსი ფუნქციონირება.

ცხრილი 3

ყველა STL კონტეინერის საერთო მეთოდები

აღწერა

ნაგულისხმევი კონსტრუქტორი

ნაგულისხმევი კონსტრუქტორი. როგორც წესი, კონტეინერს აქვს რამდენიმედიზაინერები

ასლის კონსტრუქტორი

კოპირების კონსტრუქტორი

დამღუპველი

დამღუპველი

ცარიელი

აბრუნებს true, თუ კონტეინერში ელემენტები არ არის, წინააღმდეგ შემთხვევაში false

მაქსიმალური_ზომა

აბრუნებს ელემენტების მაქსიმალურ რაოდენობას კონტეინერისთვის

ზომა

აბრუნებს ელემენტების რაოდენობას კონტეინერში მიმდინარე დროს

ოპერატორი =

ანიჭებს ერთ კონტეინერს მეორეს

ოპერატორი<

აბრუნებს 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_front, pop_front

საშუალებას გაძლევთ დაამატოთ ან წაშალოთ პირველი ელემენტი თანმიმდევრობით

Iterators, როგორც წესი, იქმნება, როგორც მეგობრები იმ კლასების, რომლებზეც მუშაობენ, რაც ამ კლასების პირად მონაცემებზე პირდაპირი წვდომის საშუალებას იძლევა. ერთ კონტეინერს შეიძლება ჰქონდეს მასთან დაკავშირებული მრავალი იტერატორი, რომელთაგან თითოეული ინარჩუნებს საკუთარ „პოზიციურ ინფორმაციას“ (ცხრილი 4).

ცხრილი 4

იტერატორის ტიპი

წვდომა

ცნობის დაქვეითება

გამეორება

შედარება

გამომავალი იტერატორი

(გამომავალი იტერატორი)

მხოლოდ ჩაწერა

შეყვანის Iterator

(შეყვანის გამეორება)

მხოლოდ კითხვა

*, ->

==, !=

წინ განმეორებადი

(წინ განმეორებადი)

Წაიკითხე და დაწერე

*, ->

==, !=

ორმხრივი იტერატორი(ორმხრივი გამეორება)

Წაიკითხე და დაწერე

*, ->

++, --

==, !=

შემთხვევითი წვდომის გამეორება

(შემთხვევითი - წვდომის განმეორებადი)

Წაიკითხე და დაწერე

*, ->,

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

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

pg_update (რესურსი $კავშირი , სტრიქონი $table_name , მასივი $data , მასივი $მდგომარეობა [, int $options = PGSQL_DML_EXEC ])

pg_update()ცვლის ცხრილის ჩანაწერებს, რომლებიც აკმაყოფილებენ პირობებს მდგომარეობამონაცემები მონაცემები. თუ არგუმენტი მოყვანილია პარამეტრები, მონაცემები გარდაიქმნება ფუნქციით pg_convert(), რომელსაც გადაეცემა ამ არგუმენტის პარამეტრები.

პარამეტრების სია

PostgreSQL მონაცემთა ბაზის კავშირის რესურსი.

ცხრილის_სახელი

ცხრილის სახელი, რომელშიც განახლებულია ჩანაწერები.

მასივი ( მასივი), რომელთა კლავიშები შეესაბამება ცხრილის ცხრილის სვეტების სახელებს და მნიშვნელობები ჩაანაცვლებს ამ სვეტების მონაცემებს.

მდგომარეობა

მასივი ( მასივი), რომლის კლავიშები შეესაბამება ცხრილის სვეტების სახელებს 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 = მასივი("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 . განახლდება მხოლოდ ის რიგები, რომელთა ველის მნიშვნელობები ემთხვევა მასივის მნიშვნელობებს.

Პარამეტრები

ერთ-ერთი მუდმივი 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 = მასივი("field1" => "AA" , "field2" => "BB" );

// ეს უსაფრთხოა, რადგან $_POST ავტომატურად გარდაიქმნება
$res = pg_update ($db, "post_log", $_POST, $data);
თუ ($res) (
ექო "მონაცემები განახლებულია:$res\n" ;
) სხვა (
ექო "არასწორი მონაცემები უნდა იყოს გაგზავნილი\n";
}
?>

Postgres, თავდაპირველად შემუშავებული UC ბერკლის კომპიუტერული მეცნიერების დეპარტამენტის მიერ, იყო პიონერი მრავალი ობიექტზე ორიენტირებული კონცეფციის შესახებ, რომელიც ახლა ხელმისაწვდომია ზოგიერთ კომერციულ მონაცემთა ბაზაში. ის უზრუნველყოფს SQL92/SQL99 ენის მხარდაჭერას, ტრანზაქციის მთლიანობას და ტიპის გაფართოებას. PostgreSQL არის ბერკლის ორიგინალური კოდის ღია კოდის შთამომავალი.

PostgreSQL არის პროდუქტი, რომელიც ხელმისაწვდომია უფასოდ. PostgreSQL მხარდაჭერის გამოსაყენებლად გჭირდებათ PostgreSQL 6.5 ან უფრო ახალი ვერსია. PostgreSQL 7.0 ან უფრო ახალი - PostgreSQL მოდულის ყველა ფუნქციისთვის. PostgreSQL მხარს უჭერს მრავალი სიმბოლოს დაშიფვრას, მათ შორის მრავალბაიტი სიმბოლოების დაშიფვრას. მიმდინარე ვერსია და ინფორმაცია PostgreSQL-ის შესახებ შეგიძლიათ იხილოთ http://www.postgresql.org/.

PostgreSQL მხარდაჭერის ჩასართავად საჭიროა --with-pgsql[=DIR] ოფცია PHP-ის შედგენისას. თუ საზიარო ობიექტების მოდული ხელმისაწვდომია, 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 სერვერი ელოდება, პრობლემები შეგექმნებათ.

6.3 ვერსიიდან (02/03/1998), PostgreSQL ნაგულისხმევად იყენებს unix დომენის სოკეტს. TCP პორტი ნაგულისხმევად არ არის გახსნილი. ცხრილი აღწერს კავშირის ამ ახალ ვარიანტებს. ეს სოკეტი შეგიძლიათ იხილოთ /tmp/.s.PGSQL.5432-ში. ეს პარამეტრი შეიძლება ჩართოთ "-i" დროშით for ფოსტის ოსტატი, და მისი მნიშვნელობა იქნება: "უსმინე TCP/IP სოკეტებს, ისევე როგორც Unix დომენის სოკეტებს."

ცხრილი 2. Postmaster და PHP

კავშირი PostgreSQL სერვერთან შეიძლება დამყარდეს შემდეგი წყვილი მნიშვნელობებით ბრძანების ხაზზე: $conn = pg_connect ("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser პაროლი=myPassword");

წინა სინტაქსი: $conn = pg_connect ("ჰოსტი", "პორტი", "ოფციები", "tty", "dbname")აღარ არის რეკომენდებული.

გარემოს ცვლადები გავლენას ახდენს PostgreSQL სერვერის/კლიენტის ქცევაზე. მაგალითად, PostgreSQL მოდული მოძებნის PGHOST გარემოს ცვლადს, თუ ჰოსტის სახელი არ არის კავშირის სტრიქონში. მხარდაჭერილი გარემოს ცვლადები განსხვავდება ვერსიებს შორის. იხილეთ PostgreSQL პროგრამისტის სახელმძღვანელო (libpq - Environment Variables) დეტალებისთვის.

დარწმუნდით, რომ დააყენეთ გარემოს ცვლადები შესაბამისი მომხმარებლისთვის. გამოიყენეთ $_ENV ან getenv ()რათა შეამოწმოს გარემოს რომელი ცვლადებია ხელმისაწვდომი მიმდინარე პროცესისთვის.

PostgreSQL 7.1.0-დან დაწყებული, შეგიძლიათ შეინახოთ 1 გბ ტექსტურ ველში. ძველ ვერსიებს შეიძლება ჰქონდეთ ბლოკის ზომის შეზღუდვები (ნაგულისხმევი იყო 8KB, მაქსიმალური იყო 32KB, განსაზღვრული კომპილაციის დროს).

დიდი ობიექტის (lo) ინტერფეისის გამოსაყენებლად, თქვენ უნდა ჩართოთ lo ფუნქციები ტრანზაქციის ბლოკში. ტრანზაქციის ბლოკი იწყება SQL განაცხადით დასაწყისიდა თუ გარიგება იყო სწორი, მთავრდება ჩადენაან ᲓᲐᲡᲐᲡᲠᲣᲚᲘ. თუ გარიგება ვერ მოხერხდა, ის უნდა დაიხუროს უკან დაბრუნებაან ᲒᲐᲣᲥᲛᲔᲑᲐ.

თქვენ არ უნდა დახუროთ კავშირი PostgreSQL სერვერთან დიდი ობიექტის დახურვამდე.

შინაარსი pg_affeded_rows - აბრუნებს ჩანაწერების რაოდენობას (steam/tuples) pg_cancel_query - აუქმებს ასინქრონიზაციის მოთხოვნას pg_client_encoding - იღებს კლიენტის კოდირებას pg_close - ხურავს postgreSQL კავშირს PG_ConNNECT - ხსნის posteg Rescl კავშირის მიღებას_PG_ConNE - ხსნის პოსტეგ Rescl კავშირის მიღებას_PG_ConNE ს კავშირი (ხელახლა დაკავშირება) pg_connection_status - იღებს კავშირის სტატუსს pg_convert - გარდაქმნის ასოციაციური მასივის მნიშვნელობას SQL განაცხადისთვის შესაფერის მნიშვნელობად pg_copy_from - ჩასმა ჩანაწერები ცხრილში pg_copy_to - აკოპირებს ცხრილს მასივში pg_dbname - იღებს მონაცემთა ბაზის სახელს pg_delete - შლის ჩანაწერებს pg_end_copy - სინქრონიზდება PostgreSQL backend-თან pg_escape_bytea - mnemonizes /escape ორობითი ბაიტის ტიპისთვის pg_escape_string - ახსოვს სტრიქონი ტიპის ტექსტისთვის/char pg_fetch_array - ამოიღებს მწკრივს -__rrowfetch array-ის სახით. ult - აბრუნებს მნიშვნელობებს მიღებული რესურსიდან pg_fetch_row - ამოიღებს მწკრივს, როგორც უთვალავი მასივი pg_field_is_null - ამოწმებს არის თუ არა ველი 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 უნდა არსებობდეს და მასში სვეტების რაოდენობა არ უნდა იყოს ნაკლები ასოცის_მასივის მნიშვნელობებზე. table_name ცხრილში სვეტების სახელები უნდა ემთხვეოდეს assoc_array მასივის კლავიშებს და მასივის მნიშვნელობების მონაცემთა ტიპები ასევე უნდა ემთხვეოდეს შესაბამისი სვეტების მონაცემთა ტიპებს. თუ კონვერტაცია წარმატებულია, ფუნქცია აბრუნებს გარდაქმნილი მნიშვნელობების მასივს, წინააღმდეგ შემთხვევაში ის აბრუნებს ცრუ.

კომენტარი:

PHP 5.6.0-დან ლოგიკური მნიშვნელობები დაშვებულია. ისინი გარდაიქმნება PostgreSQL ლოგიკურ ტიპად. ასევე მხარდაჭერილია ლოგიკური მნიშვნელობის სიმებიანი წარმოდგენები. NULLგარდაიქმნება PostgreSQL NULL-ში.

PHP 5.6.0-მდე, თუ ცხრილის table_name შეიცავს ლოგიკურ ველებს, არ გამოიყენოთ მუდმივი მართალიროგორც table_name მასივის მნიშვნელობა ამ ველებისთვის. ის გარდაიქმნება სტრიქონში "TRUE", რომელიც არის არასწორი მნიშვნელობა PostgreSQL-ის ლოგიკური ველებისთვის. გამოიყენეთ მნიშვნელობები "t", "true", "1", "y", "yes".

პარამეტრების სია

PostgreSQL მონაცემთა ბაზის კავშირის რესურსი.

ცხრილის_სახელი

მონაცემთა ბაზის ცხრილის სახელი.

ასოც_მასივი

მონაცემები გადასაყვანად.

Პარამეტრები

ერთ-ერთი მუდმივი PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULLან PGSQL_CONV_IGNORE_NOT_NULL, ან მათი კომბინაცია.

ღირებულებების დაბრუნება

მასივი ( მასივი), რომელიც შეიცავს კონვერტირებულ მონაცემებს, ან ცრუშეცდომის შემთხვევაში.

მაგალითები

მაგალითი #1 გამოყენების მაგალითი pg_convert()

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

$tmp = მასივი(
"author" => "ჯო თეკერი" ,
"year" => 2005,
"title" => "ჩემი ცხოვრება, ჯო თეკერის"
);

$vals = pg_convert ($dbconn, "ავტორები", $tmp);
?>