Συναρτήσεις PostgreSQL. LXXX. Δυνατότητες PostgreSQL Μέγεθος βάσης δεδομένων

Τυπική βιβλιοθήκη προτύπων (Τυπική βιβλιοθήκη προτύπων , STL) περιλαμβάνεται στην τυπική βιβλιοθήκη της γλώσσας C++. Περιλαμβάνει υλοποιήσεις των πιο συχνά χρησιμοποιούμενων κοντέινερ και αλγορίθμων, που εξοικονομεί τους προγραμματιστές από τη ρουτίνα να τα ξαναγράφουν ξανά και ξανά. Κατά την ανάπτυξη κοντέινερ και τους αλγόριθμους που εφαρμόζονται σε αυτά (όπως αφαίρεση πανομοιότυπων στοιχείων, ταξινόμηση, αναζήτηση κ.λπ.), συχνά πρέπει να θυσιάζονται είτε η ευελιξία είτε η απόδοση. Ωστόσο, οι προγραμματιστές STL έθεσαν ως καθήκον τους να κάνουν τη βιβλιοθήκη τόσο αποτελεσματική όσο και καθολική. Για την επίλυση αυτού του προβλήματος, χρησιμοποιήθηκαν τέτοια καθολικά μέσα της γλώσσας C++ όπως πρότυπα και υπερφόρτωση τελεστών. Στην ακόλουθη παρουσίαση θα βασιστούμε στην υλοποίηση STL που παρέχεται από τη Microsoft μαζί με τον μεταγλωττιστή Visual C++ 6.0. Ωστόσο, τα περισσότερα από τα παραπάνω θα ισχύουν επίσης για υλοποιήσεις STL από άλλους μεταγλωττιστές.

Οι κύριες έννοιες στο STL είναι οι έννοιες του container (container), του αλγόριθμου (algorithm) και του iterator (iterator).

Δοχείοείναι ένας χώρος αποθήκευσης αντικειμένων (τόσο ενσωματωμένοι όσο και τύποι που καθορίζονται από τον χρήστη). Συνήθως, τα κοντέινερ υλοποιούνται ως πρότυπα κλάσεων. Οι απλούστεροι τύποι κοντέινερ (στατικοί και δυναμικοί πίνακες) ενσωματώνονται απευθείας στη γλώσσα C++. Επιπλέον, η τυπική βιβλιοθήκη περιλαμβάνει υλοποιήσεις κοντέινερ όπως διάνυσμα, λίστα, ουρά, χάρτης, σύνολο και μερικά άλλα.

Αλγόριθμοςείναι μια συνάρτηση για το χειρισμό αντικειμένων που περιέχονται σε ένα δοχείο. Τυπικά παραδείγματα αλγορίθμων είναι η ταξινόμηση και η αναζήτηση. Το STL υλοποιεί περίπου 60 αλγόριθμους που μπορούν να εφαρμοστούν σε διάφορα κοντέινερ, συμπεριλαμβανομένων πινάκων που είναι ενσωματωμένοι στη γλώσσα C++.

Iteratorείναι μια αφαίρεση ενός δείκτη, δηλαδή ενός αντικειμένου που μπορεί να αναφέρεται σε άλλα αντικείμενα που περιέχονται στο κοντέινερ. Οι κύριες λειτουργίες ενός επαναλήπτη είναι να παρέχει πρόσβαση στο αντικείμενο στο οποίο αναφέρεται (αποαναφορά) και να μετακινείται από το ένα στοιχείο κοντέινερ σε ένα άλλο (επανάληψη, εξ ου και το όνομα iterator). Για τα ενσωματωμένα κοντέινερ, οι κανονικοί δείκτες χρησιμοποιούνται ως επαναλήπτες. Στην περίπτωση πιο πολύπλοκων κοντέινερ, οι επαναληπτικοί υλοποιούνται ως κλάσεις με ένα σύνολο υπερφορτωμένων τελεστών.

Εκτός από τα σημειωμένα στοιχεία στο STL υπάρχει ένας αριθμός βοηθητικές έννοιες ; Θα πρέπει επίσης να γνωρίσετε μερικά από αυτά.

Κατανομέας(διανομέας) είναι ένα αντικείμενο που είναι υπεύθυνο για την εκχώρηση μνήμης για στοιχεία κοντέινερ. Ένας κατανεμητής συσχετίζεται με κάθε τυπικό κοντέινερ (ο τύπος του μεταβιβάζεται ως μία από τις παραμέτρους προτύπου). Εάν κάποιος αλγόριθμος χρειάζεται να εκχωρήσει μνήμη για στοιχεία, πρέπει να το κάνει μέσω ενός κατανεμητή. Σε αυτήν την περίπτωση, μπορείτε να είστε σίγουροι ότι τα κατανεμημένα αντικείμενα θα καταστραφούν σωστά.

Το STL περιλαμβάνει μια τυπική κλάση κατανεμητή (που περιγράφεται στο αρχείο xmemory). Αυτό χρησιμοποιούν από προεπιλογή όλα τα κοντέινερ που υλοποιούνται στο STL. Ωστόσο, ο χρήστης μπορεί να εφαρμόσει τη δική του κλάση. Αυτό είναι πολύ σπάνια απαραίτητο, αλλά μερικές φορές μπορεί να γίνει για λόγους αποτελεσματικότητας ή εντοπισμού σφαλμάτων.

Ας σταθούμε λεπτομερέστερα στην εξέταση των εισαγόμενων εννοιών.

Εμπορευματοκιβώτια . Κάθε κοντέινερ παρέχει μια αυστηρά καθορισμένη διεπαφή μέσω της οποίας οι αλγόριθμοι θα αλληλεπιδρούν μαζί του. Οι επαναλήψεις για συγκεκριμένο κοντέινερ παρέχουν αυτήν τη διεπαφή. Είναι σημαντικό να τονιστεί ότι δεν χρησιμοποιούνται πρόσθετες συναρτήσεις μέλους για την αλληλεπίδραση μεταξύ αλγορίθμων και δοχείων. Αυτό γίνεται επειδή πρέπει να λειτουργούν οι τυπικοί αλγόριθμοι, συμπεριλαμβανομένων των ενσωματωμένων κοντέινερ της γλώσσας C++, που έχουν επαναλήπτες (δείκτες) αλλά τίποτα άλλο. Έτσι, όταν δημιουργείτε το δικό σας κοντέινερ, η εφαρμογή ενός επαναληπτικού είναι το ελάχιστο.

Κάθε κοντέινερ υλοποιεί έναν συγκεκριμένο τύπο επαναλήπτη. Αυτό επιλέγει τον πιο λειτουργικό τύπο επαναλήπτη που μπορεί να εφαρμοστεί αποτελεσματικά για ένα δεδομένο κοντέινερ. "Αποτελεσματικό" σημαίνει ότι η ταχύτητα εκτέλεσης λειτουργιών στον επαναλήπτη δεν πρέπει να εξαρτάται από τον αριθμό των στοιχείων στο κοντέινερ. Για παράδειγμα, ένας επαναλήπτης τυχαίας πρόσβασης υλοποιείται για ένα διάνυσμα και ένας αμφίδρομος επαναλήπτης για μια λίστα. Επειδή η ταχύτητα μιας λειτουργίας λίστας είναι γραμμική με το μήκος της, δεν εφαρμόζεται ένας επαναλήπτης τυχαίας πρόσβασης για μια λίστα.

Ανεξάρτητα από την πραγματική οργάνωση του δοχείου (διάνυσμα, λίστα, δέντρο), τα στοιχεία που είναι αποθηκευμένα σε αυτό μπορούν να θεωρηθούν ως μια ακολουθία. Ο επαναλήπτης του πρώτου στοιχείου σε αυτήν την ακολουθία επιστρέφεται από τη συνάρτηση start() και ο επαναλήπτης του στοιχείου που ακολουθεί το τελευταίο επιστρέφεται από τη συνάρτηση end(). Αυτό είναι πολύ σημαντικό, καθώς όλοι οι αλγόριθμοι στο STL λειτουργούν ακριβώς με ακολουθίες που καθορίζονται από επαναλήπτες έναρξης και τέλους.

Εκτός από τους κανονικούς επαναλήπτες στο STL, υπάρχουν και αντίστροφοι επαναλήπτες (αντίστροφος επαναλήπτης ). Ένας αντίστροφος επαναλήπτης είναι διαφορετικός στο ότι επαναλαμβάνεται μέσω της αλληλουχίας των στοιχείων σε ένα δοχείο με αντίστροφη σειρά. Με άλλα λόγια, οι πράξεις + και - αντιστρέφονται. Αυτό επιτρέπει στους αλγόριθμους να εφαρμοστούν τόσο σε άμεσες όσο και σε αντίστροφες ακολουθίες στοιχείων. Για παράδειγμα, χρησιμοποιώντας τη συνάρτηση εύρεσης, μπορείτε να αναζητήσετε στοιχεία τόσο από την "αρχή" και από το "τέλος" ενός κοντέινερ.

Στο STL, τα δοχεία χωρίζονται σε τρεις κύριες ομάδες (Πίνακας 2): δοχεία ακολουθίας, συσχετιστικά δοχεία και προσαρμογείς δοχείων. Οι δύο πρώτες ομάδες συνδυάζονται σε δοχεία πρώτης κατηγορίας.

πίνακας 2

Κατηγορία κοντέινερ STL

Περιγραφή

Ακολουθία δοχεία

διάνυσμα

Δυναμική συστοιχία

deque

Αμφίδρομη ουρά

λίστα

Αμφίδρομη γραμμική λίστα

Συνεταιριστικά Δοχεία

Συνειρμικό δοχείο με μοναδικά κλειδιά

πολυσύνολο

Συσχετιστικό κοντέινερ που επιτρέπει διπλότυπα κλειδιά

Συνειρμικό δοχείο για σετ μοναδικών στοιχείων

πολυχάρτη

Συνειρμικό δοχείο για σετ με διπλά στοιχεία

Προσαρμογείς δοχείων

σωρός

Τυπική στοίβα

Ουρά

Τυπική ουρά

προτεραιότητα_ουρά

Ουρά προτεραιότητας

Κάθε κλάση κοντέινερ υλοποιείται σε STL , περιγράφει το σύνολο των τύπων που σχετίζονται με το κοντέινερ. Θα πρέπει να ακολουθήσετε την ίδια πρακτική όταν γράφετε τα δικά σας δοχεία. Ακολουθεί μια λίστα με τους πιο σημαντικούς τύπους:

value_type - τύπος στοιχείου.

Τύπος Μεγέθους - ένας τύπος για την αποθήκευση του αριθμού των στοιχείων (συνήθως size_t);

επαναλήπτης - επαναλήπτης για στοιχεία κοντέινερ.

key_type - τύπος κλειδιού (σε συσχετιστικό δοχείο).

Εκτός από τους τύπους, μπορούμε να διακρίνουμε ένα σύνολο λειτουργιών που υλοποιεί σχεδόν κάθε κοντέινερ στο 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, το οποίο αναφέρεται στην επόμενη θέση μετά το τέλος του κοντέινερ

rbegin

Δύο εκδόσεις αυτής της συνάρτησης επιστρέφουν είτε reverse_iterator ή reverse_const_iterator , που αναφέρεται στο τελευταίο στοιχείο του δοχείου

αποχωρίζω

Δύο εκδόσεις αυτής της συνάρτησης επιστρέφουν είτε έναν reverse_iterator είτε έναν reverse_const_iterator, που αναφέρεται στη θέση πριν από το πρώτο στοιχείο του κοντέινερ

εισαγωγή, διαγραφή,

Σας επιτρέπει να εισάγετε ή να αφαιρέσετε στοιχεία στη μέση μιας ακολουθίας

Τελικός πίνακας 3

Σαφή

Αφαιρεί όλα τα στοιχεία από ένα δοχείο

μπροστά πίσω

push_back, pop_back

Σας επιτρέπει να προσθέσετε ή να αφαιρέσετε το τελευταίο στοιχείο σε μια σειρά

push_front, pop_front

Σας επιτρέπει να προσθέσετε ή να αφαιρέσετε το πρώτο στοιχείο σε μια σειρά

Οι επαναλήπτες δημιουργούνται συνήθως ως φίλοι των κλάσεων στις οποίες λειτουργούν, επιτρέποντας την άμεση πρόσβαση στα ιδιωτικά δεδομένα αυτών των κλάσεων. Ένα μόνο κοντέινερ μπορεί να έχει πολλαπλούς επαναλήπτες που σχετίζονται με αυτό, καθένας από τους οποίους διατηρεί τις δικές του «πληροφορίες θέσης» (Πίνακας 4).

Πίνακας 4

Τύπος Iterator

Πρόσβαση

Αποαναφορά

Επανάληψη

Σύγκριση

Επαναληπτικός εξόδου

(επαναλήπτης εξόδου)

Μόνο ηχογράφηση

Iterator εισόδου

(επαναληπτικός εισόδου)

Μόνο διάβασμα

*, ->

==, !=

Εμπρός επαναλήπτης

(επαναλήπτης προώθησης)

Διάβασε και γράψε

*, ->

==, !=

Αμφίδρομος επαναλήπτης(αμφίδρομος επαναλήπτης)

Διάβασε και γράψε

*, ->

++, --

==, !=

Επαναληπτική τυχαία πρόσβαση

(τυχαία - επαναληπτική πρόσβαση)

Διάβασε και γράψε

*, ->,

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

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

pg_update (πόρος $σύνδεση , συμβολοσειρά $table_name , πίνακας $δεδομένων , πίνακας $κατάσταση [, 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 , πίνακας $δεδομένων , πίνακας $κατάσταση [, 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 είναι ένας ανοιχτός κώδικας απόγονος του αρχικού κώδικα Berkeley.

Το PostgreSQL είναι ένα προϊόν που διατίθεται δωρεάν. Για να χρησιμοποιήσετε την υποστήριξη PostgreSQL, χρειάζεστε PostgreSQL 6.5 ή νεότερη έκδοση. PostgreSQL 7.0 ή νεότερη έκδοση - για όλες τις λειτουργίες της μονάδας PostgreSQL. Η PostgreSQL υποστηρίζει πολλές κωδικοποιήσεις χαρακτήρων, συμπεριλαμβανομένων κωδικοποιήσεων χαρακτήρων πολλών byte. Η τρέχουσα έκδοση και οι πληροφορίες σχετικά με την 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 (Η διεπαφή προγράμματος-πελάτη PostgreSQL C) και τον τρόπο μεταγλώττισης του libpq. Εάν λείπει μια συνάρτηση, το libpq δεν υποστηρίζει τις δυνατότητες που απαιτούνται από αυτήν τη λειτουργία.

Είναι επίσης σημαντικό να χρησιμοποιείτε ένα libpq που είναι νεότερο από τον PostgreSQL Server στον οποίο συνδέεστε. Εάν χρησιμοποιείτε ένα 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("host", "port", "options", "tty", "dbname")δεν συνιστάται πλέον.

Οι μεταβλητές περιβάλλοντος επηρεάζουν τη συμπεριφορά του διακομιστή/πελάτη PostgreSQL. Για παράδειγμα, η λειτουργική μονάδα PostgreSQL θα αναζητήσει τη μεταβλητή περιβάλλοντος PGHOST εάν το όνομα κεντρικού υπολογιστή δεν είναι στη συμβολοσειρά σύνδεσης. Οι υποστηριζόμενες μεταβλητές περιβάλλοντος διαφέρουν μεταξύ των εκδόσεων. Για λεπτομέρειες, ανατρέξτε στο Εγχειρίδιο προγραμματιστή PostgreSQL (libpq - Environment Variables).

Βεβαιωθείτε ότι έχετε ορίσει τις μεταβλητές περιβάλλοντος για τον κατάλληλο χρήστη. Χρησιμοποιήστε $_ENV ή getenv()για να ελέγξετε ποιες μεταβλητές περιβάλλοντος είναι διαθέσιμες στην τρέχουσα διαδικασία.

Ξεκινώντας με την PostgreSQL 7.1.0, μπορείτε να αποθηκεύσετε 1 GB σε ένα πεδίο κειμένου. Οι παλαιότερες εκδόσεις μπορεί να έχουν περιορισμούς μεγέθους μπλοκ (η προεπιλογή ήταν 8 KB, το μέγιστο ήταν 32 KB, που προσδιορίστηκε κατά το χρόνο μεταγλώττισης).

Για να χρησιμοποιήσετε τη διεπαφή μεγάλου αντικειμένου (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 σύνδεση λήψης_USYConnen είναι το σύνδεση (επανασύνδεση) pg_connection_status - παίρνει την κατάσταση σύνδεσης pg_convert - μετατρέπει την τιμή ενός συσχετιστικού πίνακα σε μια τιμή κατάλληλη για την πρόταση SQL pg_copy_from - εισάγει εγγραφές σε έναν πίνακα από έναν πίνακα pg_copy_to - αντιγράφει έναν πίνακα σε έναν πίνακα pg_dbname - παίρνει το όνομα της βάσης δεδομένων pg_delete - διαγράφει εγγραφές pg_end_copy - συγχρονίζεται με το backend PostgreSQL pg_escape_bytea - μνημονεύει /escape δυαδικό για τον τύπο bytea pg_escape_string - μνημονεύει τη συμβολοσειρά για τον τύπο text/char pg_fetch_array - ανακτά μια σειρά pg_fetch_array - ανακτά μια σειρά -ανάκτηση_ανάκτηση_αντικείμενο 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, επιτρέπονται τιμές boolean. Μετατρέπονται στον τύπο PostgreSQL boolean. Υποστηρίζονται επίσης αναπαραστάσεις συμβολοσειράς μιας boolean τιμής. ΜΗΔΕΝΙΚΟμετατρέπεται σε PostgreSQL NULL.

Πριν από την PHP 5.6.0, εάν ο πίνακας table_name περιέχει δυαδικά πεδία, μην χρησιμοποιείτε σταθερά ΑΛΗΘΗΣως την τιμή του πίνακα 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" ,
"year" => 2005,
"title" => "My Life, by Joe Thackery"
);

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