Ασχολούμαστε με τη μάρκετινγκ MySQL, μια οπτική αναπαράσταση. Απλά παραδείγματα σύνδεσης.

Τα έντυπα αποτελούν μέρος σχεδόν οποιασδήποτε εφαρμογής ιστού σήμερα. Η Thea είναι η κύρια μέθοδος για την παραλαβή των εισροών από τους ανθρώπους που χρησιμοποιούν την εφαρμογή. Αυτά κυμαίνονται από το μέγεθος από το One-Field Opt-In Forms όπου εισάγετε μόνο τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας, σε πολύ μεγάλες μορφές δεκάδων ή ακόμα και εκατοντάδες πεδία.

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

Μία από τις προκλήσεις που προκύπτουν από τη διάσπαση της φόρμας πάνω από τις πολλαπλές σελίδες περνούν τα δεδομένα από τη μία σελίδα στο άλλο, όπως στο τελευταίο σημείο των απαιτούμενων δεδομένων έτοιμο για επεξεργασία. Θα εξετάσουμε δύο μεθόδους για να το κάνετε αυτό: μεταβλητές περιόδου σύνδεσης και κρυμμένα πεδία εισόδου.

Ποιες είναι οι συνεδρίες ούτως ή άλλως;

Μια συνεδρία HTML είναι μια συλλογή μεταβλητών που διατηρεί την κατάσταση του ως ο χρήστης να πλοηγεί τις σελίδες ενός συγκεκριμένου ιστότοπου. Θα είναι μόνο διαθέσιμο σε αυτόν τον τομέα που το δημιούργησε και θα διαγραφεί σύντομα μετά τον χρήστη να εγκαταλείψει τον ιστότοπο ή να κλείσει το πρόγραμμα περιήγησής του.

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

Μορφή πολλαπλών σελίδων χρησιμοποιώντας συνεδρίες

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

Το πρώτο αρχείο που πρόκειται να δημιουργήσουμε (βήμα 1 της φόρμας) θα περιέχει μόνο μια απλή φόρμα με δύο πεδία.

Εντάξει, έτσι δεν υπάρχουν περισσότερα από 2 πεδία εισόδου και ένα suniton για να μας οδηγήσετε στο βήμα 2. Στην ακόλουθη σελίδα, εκτός από τη φόρμα HTML για να συγκεντρώσουμε τα δεδομένα μέλους, θα χρειαστούμε κώδικα για την αποθήκευση των υποβληθέντων δεδομένων από το βήμα 1 στο βήμα 1 Συνεδρίαση.

Στο βήμα 3, πρέπει να δημιουργήσουμε και πάλι νέες μεταβλητές συνόδου, να αναθέσουμε τιμές που λαμβάνονται ταχυδρομικώς και να δημιουργήσετε το τελικό μέρος της φόρμας.

Τώρα που δημιουργήσαμε βήμα 3 της φόρμας, τι έχει απομείνει είναι το τελικό σενάριο επεξεργασίας που εισάγει τα δεδομένα στη βάση δεδομένων MySQL.

Και τελειώνουμε. Παρακαλείστε να σημειώσετε ότι στο τελικό ερώτημα, χρησιμοποιούμε δεδομένα από τη συστοιχία $ _session και επίσης δεδομένα από τη συστοιχία $ _post, που δημοσιεύτηκε από το τελευταίο βήμα της φόρμας.

Αν και μπορεί επίσης να εφαρμοστεί στην ανάπτυξη βασικών προϊόντων λογισμικού για Τοπική χρήση. Αλλά το άρθρο δεν θα μιλήσει γι 'αυτό.

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

Η έννοια της λέξης ενταχθεί.

Γλώσσες ανάπτυξης βάσεων δεδομένων, δεν έχει σημασία τι ακριβώς αυτή η γλώσσα, ως βάση, λαμβάνει τυποποιημένες λέξεις από αγγλόφωνους λεξικά (γι 'αυτό, υπό την προϋπόθεση ότι γνωρίζετε ΑγγλικάΘα είστε πολύ πιο εύκολο για εσάς να εργαστείτε με τραπέζια). Για την εφαρμογή της σύνδεσης των πινάκων στο δείγμα, λαμβάνεται υπόψη η ίδια λέξη - ενταχθούν. Το SQL μου χρησιμοποιείται στη γλώσσα προγραμματισμού βάσης δεδομένων. Η μετάφραση αυτής της υπηρεσίας λέξης είναι ακριβώς η ίδια όπως και στην ίδια την γλώσσα - "Ένωση".

Ερμηνεία του σχεδιασμού του MySQL - Συμμετοχή, με οποιοδήποτε από αυτά, θα είναι ακριβώς το ίδιο. Εάν αποκρυπτογραφήσετε τη σχεδίαση, δηλαδή το σχέδιο λειτουργίας της, τότε λαμβάνουμε την ακόλουθη τιμή: τα σχέδια θα σας επιτρέψουν να συλλέξετε τα απαραίτητα πεδία από διαφορετικούς πίνακες ή επενδυμένα αιτήματα σε ένα δείγμα.

Τύποι σχεδίων για το συνδυασμό

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

  1. Εσωτερική σύνδεση.
  2. Σταυρός.
  3. Αριστερά ενταχθούν.
  4. Σωστή σύνδεση.

Ανάλογα με την εργασία, κάθε μία από τις τυποποιημένες δομές θα δώσει Διαφορετικά αποτελέσματαΑυτό θα σας επιτρέψει να λαμβάνετε αναφορές σχετικά με διαφορετικές παραμέτρους σε σύντομο χρονικό διάστημα.

Δημιουργία και πλήρωση πινάκων για περαιτέρω χρήση

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

Ο πρώτος πίνακας θα περιγράψει ορισμένα στοιχεία που ένα άτομο βρίσκεται συνεχώς καθ 'όλη τη διάρκεια της ζωής του.

Στον δεύτερο πίνακα, περιγράφουμε ορισμένες ιδιότητες αντικειμένων από το πρώτο τραπέζι, ώστε να μπορείτε να εργαστείτε περαιτέρω μαζί τους.

Σε γενικές γραμμές, οι δύο πίνακες θα είναι αρκετοί για να δείξουν την εργασία τους στο παράδειγμα. Τώρα μπορείτε να προχωρήσετε στην πρακτική εξέταση των σχεδίων μας.

Χρησιμοποιώντας εσωτερική σύνδεση.

Όταν χρησιμοποιείτε το σχεδιασμό MySQL - Join Gereer θα πρέπει να λαμβάνει υπόψη ορισμένα από τα χαρακτηριστικά του. Αυτός ο σχεδιασμός θα σας επιτρέψει να επιλέξετε και από τους δύο πίνακες μόνο τα αρχεία που είναι στο πρώτο και στον δεύτερο πίνακα. Πως δουλεύει? Στο πρώτο τραπέζι έχουμε το κύριο κλειδί - το οποίο υποδεικνύει τον αριθμό των αρχείων ακολουθίας στον πίνακα.

Κατά τη δημιουργία ενός δεύτερου πίνακα, το ίδιο κλειδί χρησιμοποιείται ως αριθμός ακολουθίας, ένα παράδειγμα μπορεί να προβληθεί στις εικόνες. Όταν επιλεγεί τα δεδομένα, η δήλωση επιλογής θα καθορίσει το αποτέλεσμα μόνο των αρχείων των οποίων οι αριθμοί αλληλουχίας συμπίπτουν - αυτό σημαίνει ότι είναι στο πρώτο και στον δεύτερο πίνακα.

Όταν χρησιμοποιείτε το σχεδιασμό, πρέπει να καταλάβετε ποια δεδομένα πρέπει να ληφθούν. Το πιο συνηθισμένο λάθος, ειδικά στον προγραμματιστή αρχάριων, είναι παράλογη και ακατάλληλη χρήση του σχεδιασμού της εσωτερικής σύνδεσης. Καθώς μπορείτε να εξετάσετε το σενάριο που θα μας επιστρέψει από την προηγουμένως περιγραφεί και να ολοκληρωθεί πληροφορίες σχετικά με τα αντικείμενα και τις ιδιότητές τους. Αλλά εδώ μπορεί να υπάρχουν διάφοροι τρόποι χρήσης του σχεδιασμού. Σε αυτό το σχέδιο, η SQL μου είναι μια πολύ ευέλικτη γλώσσα. Έτσι, μπορείτε να εξετάσετε τα παραδείγματα χρήσης της εσωτερικής σύνδεσης MySQL.

Συνδυάζοντας πίνακες χωρίς να διευκρινιστούν παραμέτρους. Σε αυτή την περίπτωση, λαμβάνουμε το αποτέλεσμα ενός τέτοιου σχεδίου:

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

Μια τρίτη ενσωμάτωση του σχεδιασμού είναι επίσης δυνατή όταν τα πεδία καθορίζονται στο ερώτημα μέσω της λέξης "On" σε ποιους πίνακες πρέπει να εμφανιστούν. Σε αυτή την περίπτωση, η επιλογή θα επιστρέψει τα ακόλουθα δεδομένα:

Χαρακτηριστικά της χρήσης της αριστερής σύνδεσης

Εάν εξετάσετε έναν άλλο τρόπο να συνδυάσετε τα τραπέζια χρησιμοποιώντας το σχεδιασμό MySQL-Join, μπορείτε να δείτε τη διαφορά στα δεδομένα που εμφανίζονται. Αυτός ο μηχανισμός είναι ο αριστερός σχεδιασμός.

Χρησιμοποιώντας την αριστερή σύνδεση με το σχεδιασμό MySQL έχει κάποια χαρακτηριστικά και, όπως το εσωτερικό, απαιτεί μια σαφή κατανόηση του αποτελέσματος που πρέπει να πάρετε.

Στην περίπτωση αυτή, όλα τα αρχεία από τον πρώτο πίνακα θα επιλεγούν πρώτα και οι μεταγενέστερες καταχωρήσεις θα συνδεθούν από τον δεύτερο πίνακα ιδιοτήτων. Ταυτόχρονα, αν υπάρχει ένα αρχείο, για παράδειγμα, ένα "σκαμνί" και δεν υπάρχουν ιδιότητες γι 'αυτό στον δεύτερο πίνακα, τότε η αριστερή δήλωση θα εμφανίσει την τιμή του NULL, η οποία λέει ο προγραμματιστής ότι δεν υπάρχει υπογράψει.

Η χρήση αυτού του σχεδιασμού θα επιτραπεί να καθορίσει ποια πεδία ή, για παράδειγμα, τα εμπορεύματα στο κατάστημα δεν εκθέτουν τιμή και ούτω καθεξής.

Ένα παράδειγμα χρήσης αριστεράς.

Για την εξέταση, στην πράξη, η αριστερή σύνδεση MySQL σχεδιασμός χειριστή χρησιμοποιεί πίνακες που περιγράφονται προηγουμένως. Για παράδειγμα, πρέπει να επιλέξετε ολόκληρη τη λίστα των προϊόντων που βρίσκονται στο κατάστημα και ελέγξτε για ορισμένες από αυτές τις ενδείξεις ή οι ιδιότητες δεν έχουν τοποθετηθεί. Σε αυτή την περίπτωση, το δείγμα θα εμφανίσει όλα τα προϊόντα στην οθόνη και για όσους δεν έχουν ιδιότητες, θα τοποθετηθούν κενές τιμές.

Χρήση όπου συμμετέχετε σε σχεδίαση

Ως παράμετρος, η συγχώνευση μπορεί να περιλαμβάνει όχι μόνο τις οδηγίες των πεδίων για τους οποίους συνδέεται ο πίνακας, αλλά μπορεί επίσης να περιλαμβάνει τον χειριστή κατάστασης.

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

Όταν χρησιμοποιείται στο MySQL Join - όπου πρέπει να κατανοήσετε σαφώς ότι μόνο τα αρχεία στα οποία ανήκει η καθορισμένη κατάσταση, και το δείγμα θα μοιάζει τότε αυτό:

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

Χρησιμοποιώντας τη σύνδεση για να αλλάξετε δεδομένα σε πίνακες

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

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

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

Κτίριο σύνθετων αιτημάτων

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

Για μια πιο συγκεκριμένη κατανόηση, μπορείτε να εξετάσετε (σε MySQL Join) Παραδείγματα σύνθετων ερωτημάτων. Εάν είστε νέοι και απλά αρχίστε να εργάζεστε με τις βάσεις δεδομένων, τότε μια τέτοια εκπαίδευση θα επωφεληθεί μόνο. Η ιδανική επιλογή θα είναι

Αυτό το ερώτημα θα επιστρέψει στις 58 συμμετοχές στις συμβάσεις πωλήσεων, για τις οποίες το υπόλοιπο είναι γεμάτο ή υπάρχει. Χρήματα Στην επιλεγμένη ημερομηνία. Σε αυτή την περίπτωση, αυτή είναι η τρέχουσα ημερομηνία. Μια προϋπόθεση προστέθηκε επίσης στο δείγμα ότι στον τίτλο της σύμβασης θα πρέπει να υπάρχουν σύμβολα - "123". Οι πληροφορίες που εμφανίζονται στην οθόνη (δεδομένα) θα έχουν ταξινόμηση - παραγγελία στον αριθμό της σύμβασης.

Το ακόλουθο παράδειγμα θα εμφανίσει δεδομένα σχετικά με όλες τις πληρωμές στις οποίες θα καθοριστεί ο αριθμός της σύμβασης.

Χρησιμοποιήστε υποσιοστάτες

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

Για παράδειγμα, εάν είναι απαραίτητο από τον πίνακα, το οποίο έχει πολλά κελιά των πεδίων και, πούμε, χίλιες καταχωρήσεις, επιλέξτε μόνο δύο πεδία, τότε θα πρέπει να χρησιμοποιήσετε το αίτημα που θα επιστρέψει μόνο τα απαραίτητα πεδία και να το συνδυάσετε με τα κύρια δεδομένα δείγμα. πως Παράδειγμα mysql Συμμετοχή στο SELECT μπορεί να προβληθεί από αυτόν τον τύπο αιτήματος:

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

Στο MySQL, το δείγμα που χρησιμοποιεί σύνδεση μπορεί να παραχθεί διαφορετικοί τρόποι. Θα προσπαθήσουμε να εξετάσουμε όλους αυτούς τους τύπους αιτημάτων. Εδώ είναι ένας κατάλογος όλων των αιτημάτων με τη συμμετοχή της συμμετοχής:

  1. Εσωτερική σύνδεση.
  2. Αριστερά ενταχθούν.
  3. Σωστή σύνδεση.
  4. Δεξιά ένωση χωρίς διασταυρώσεις με το αριστερό τραπέζι
  5. Πλήρης εξωτερική
  6. Πλήρης εξωτερική όπου το αριστερό ή το δεξί τραπέζι είναι άδειο

Αλλά η εικόνα σε αυτούς τους τύπους συμμετοχής:

Θα επισυνάψω τα αρχεία των αρχείων ιστοσελίδων, μεταξύ των οποίων θα συμμετάσχω. Σε ποια θα αποσύρω όλα τα αρχεία με Διαφορετικοί φορείς εκμετάλλευσης Συμμετοχή.

Εσωτερική σύνδεση.

Ας ξεκινήσουμε με αυτόν τον χειριστή Inner Join, επειδή αυτός ο χειριστής ενεργοποιείται από προεπιλογή εάν γράψετε απλά να συμμετάσχετε στο ερώτημα. Αυτός ο χειριστής επιλέγει όλες τις εγγραφές από δύο πίνακες, όπου η κατάσταση λειτουργεί μετά τον χειριστή. Έχουμε δύο αρχεία και μηνύματα πίνακες:

Πίνακας μηνυμάτων:

Το αίτημα με τη συμμετοχή θα είναι τα εξής:

Επιλέξτε * Από τα μηνύματα Inner Συμμετοχή αρχείων σε μηνύματα.FID \u003d αρχεία.FID

Ως αποτέλεσμα, αυτές οι καταχωρήσεις θα εμφανιστούν.

Πίνακας αρχείων:

Αριστερή σύνδεση θα χρειαστεί κατά την εμφάνιση όλων των εγγραφών των μηνυμάτων και υπάρχει ή δεν υπάρχει συνημμένο αρχείο, θα ελέγξουμε μέσω PHP.

Αριστερά συμμετέχουν χωρίς διασταυρώσεις με το δεξιό τραπέζι

Αριστερή σύνδεση Εμφανίζει όλες τις εγγραφές από την αριστερή τραπέζι, εκτός από εκείνα στα οποία ο FID συμπίπτει στο δεξιό τραπέζι.

Πίνακας μηνυμάτων:

Το αίτημα με την αριστερή σύνδεση χωρίς διασταυρώσεις θα είναι τα εξής:

Επιλέξτε * Από τα μηνύματα που αφορούν τα αρχεία σε μηνύματα.FID \u003d αρχεία.FID όπου τα αρχεία.fid είναι μηδενική

Ως αποτέλεσμα, έχουμε αυτό το δείγμα εδώ:

Πίνακας αρχείων:

Η δεξιά σύνδεση θα χρειαστεί όταν εμφανίζετε όλα τα προσαρτημένα αρχεία χωρίς διαφορά, χρησιμοποιούνται ή όχι, απλά όλα τα αρχεία.

Δεξιά συμμετοχή χωρίς διασταυρώσεις

Δεξιά ένωση χωρίς διασταυρώσεις, εμφανίζει όλες τις εγγραφές από το δεξιό τραπέζι, εκτός από εκείνες όπου υπάρχουν διασταυρώσεις με το αριστερό τραπέζι.

Πίνακας μηνυμάτων:

Το αίτημα με το δικαίωμα σύνδεσης χωρίς διασταυρώσεις θα είναι τα εξής:

Επιλέξτε * Από τα μηνύματα Συμμετάσχετε δεξιά αρχεία σε μηνύματα.FID \u003d αρχεία.FID όπου τα μηνύματα.FID είναι μηδενική

Έτσι λαμβάνουμε τα ακόλουθα δεδομένα:

ΣΤΑ ΜΕΣΑ Σώμα κειμένου. ΜΟΥΡΕΛΛΟ Μονοπάτι.
ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 1 /Files/1.png.

Η δεξιά σύνδεση θα χρειαστεί κατά την εμφάνιση όλων των συνημμένων αρχείων που δεν συνδέονται με κανένα μήνυμα. Για παράδειγμα, αν θέλουμε να εμφανίσουμε αρχεία που δεν χρησιμοποιούνται.

Πλήρης εξωτερική σύνδεση.

Παρά το γεγονός ότι στη γλώσσα του SQL υπάρχει πλήρης εξωτερική σύνδεση, στο MySQL Αυτός ο χειριστής δεν είναι. Το γεγονός είναι ότι ένας παρόμοιος χειριστής είναι ένα τεράστιο φορτίο στο διακομιστή. Τώρα έχουμε 3 αρχεία και 3 μηνύματα και 4 γραμμές σχηματίζονται ως αποτέλεσμα της εκτέλεσης του ερωτήματος. Δεν είμαι σίγουρος ότι αυτή είναι μια καλή ιδέα να γράψω ένα αίτημα, το οποίο δίνει μαζί δύο αιτήματα αριστερά μέχρι και τη δεξιά σύνδεση. Αλλά εξακολουθεί να είναι δυνατό να μιμηθεί το πλήρες εξωτερικό αίτημα σύνδεσης.

Πίνακας μηνυμάτων:

Η πλήρης εξομοίωση της αιτήματος της εξωτερικής σύνδεσης θα έχει ως εξής:

Επιλέξτε * Από τα μηνύματα που αφορούν τα αρχεία στα μηνύματα.FID \u003d αρχεία.FID Union Select * από τα μηνύματα δεξιά μέχρι αρχεία σε μηνύματα.FID \u003d αρχεία.FID

Σε αυτό το ερώτημα, χρησιμοποιούμε τη δήλωση της Ένωσης για να συνδυάσετε τα δύο αιτήματα για αριστερά μέχρι και δεξιά.

Ως αποτέλεσμα, θα λάβουμε τις ακόλουθες καταχωρήσεις:

ΣΤΑ ΜΕΣΑ Σώμα κειμένου. ΜΟΥΡΕΛΛΟ Μονοπάτι.
1 Δοκιμή 2 /Files/2.png.
2 ΓΕΙΑ ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ
3 Γεια. 3 /Files/3.png.
ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 1 /Files/1.png.

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

Πλήρης εξωτερική συμμετοχή χωρίς διασταυρώσεις

Ένα άλλο είδος σύνδεσης είναι ακόμα πιο τρελό από το απλό εξωτερικό σύνδεσμο, δηλαδή πλήρης εξωτερική συμμετοχή χωρίς διασταυρώσεις. Δεν μπορώ ακόμη να προσφέρω πού μπορείτε να χρησιμοποιήσετε αυτό το είδος σύνδεσης. Επειδή ως εκ τούτου, λαμβάνουμε αρχεία που δεν χρησιμοποιούνται και μηνύματα χωρίς αρχεία. Και πώς πιθανότατα έχετε ήδη μαντέψει Αυτός ο χειριστής δεν είναι επίσης στο mysql. Παραμένει μόνο να το μιμηθείτε με τη βοήθεια δύο αριστερών επιχειρήσεων χωρίς προτάσεις και σωστά να συμμετάσχετε χωρίς διασταυρώσεις.

Πλήρης εξωτερική ένταξη Εξετάζει την εξομοίωση χωρίς διασταυρώσεις:

$ Sql \u200b\u200b\u003d "Επιλέξτε * από μηνύματα Αριστερά αρχεία σε μηνύματα.FID \u003d αρχεία.FID όπου τα αρχεία.fid είναι null Union Select * από τα μηνύματα δεξιά μέχρι τα αρχεία στα μηνύματα.

Ως αποτέλεσμα (οι πίνακες προέλευσης είναι οι ίδιοι με το παράδειγμα με την πλήρη εξωτερική ένωση) Θα πάμε:

ΣΤΑ ΜΕΣΑ Σώμα κειμένου. ΜΟΥΡΕΛΛΟ Μονοπάτι.
2 ΓΕΙΑ ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ
ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 1 /Files/1.png.

Αυτό είναι πιθανώς όλα, στα ακόλουθα μαθήματα, θα αρχίσουμε να γράφουμε ακόμα πιο σύνθετα αιτήματα σε αρκετούς πίνακες ταυτόχρονα.

Έχετε ένα javascript μπλοκαρισμένο στο πρόγραμμα περιήγησής σας. Επιτρέψτε στο Javascript να εργαστείτε τον ιστότοπο!

Εργασία με έντυπα

Τα έντυπα HTML χρησιμοποιούνται για τη μεταφορά δεδομένων από την ιστοσελίδα της ιστοσελίδας. Για την εργασία με τα έντυπα στο PHP παρέχει ορισμένα ειδικά κεφάλαια.

Προκαθορισμένες μεταβλητές

Στο PHP, υπάρχουν ορισμένες προκαθορισμένες μεταβλητές που δεν αλλάζουν όταν εκτελούν όλες τις εφαρμογές σε ένα συγκεκριμένο περιβάλλον. Ονομάζονται επίσης μεταβλητές περιβάλλοντος ή μεταβλητές. Αντικατοπτρίζουν τις ρυθμίσεις του Web-Server του Apache, καθώς και πληροφορίες σχετικά με το αίτημα για αυτό το πρόγραμμα περιήγησης. Είναι δυνατή η λήψη τιμών URL, συμβολοσειρές ερωτημάτων και άλλα στοιχεία αίτησης HTTP.

Όλες οι προκαθορισμένες μεταβλητές περιέχονται στον παγκόσμιο συστατικό πίνακα $. Εκτός από τις μεταβλητές περιβάλλοντος, ο πίνακας αυτός περιέχει επίσης παγκόσμιες μεταβλητές που ορίζονται στο πρόγραμμα.

Παράδειγμα 1.

Δείτε τη διάταξη $ globals $ Αξία) echo "\\ $ globals [\\" $ key \\ "] \u003d\u003d $ αξία
"; ?>

Ως αποτέλεσμα, μια λίστα με όλες τις παγκόσμιες μεταβλητές θα εμφανιστεί στην οθόνη, συμπεριλαμβανομένων των μεταβλητών περιβάλλοντος. Το πιο συνηθισμένο από αυτά:

ΜεταβλητόςΠεριγραφήΚτίριο
$ _Server ["http_user_agent"]Όνομα και έκδοση πελάτηMozilla / 5.0 (συμβατό, googlebot / 2.1; + http: //www.google.com/bot.html)
$ _Server ["Remote_addr"]διεύθυνση IP144.76.78.3
getenv ("http_x_forwarded_for")Εσωτερική διεύθυνση IP πελάτη
$ _Server ["request_method"]Μέθοδος αιτήματος (λήψη ή θέση)Παίρνω.
$ _Server ["query_string"]Όταν ζητάτε να αποκτήσετε κωδικοποιημένα δεδομένα που μεταδίδονται με τη διεύθυνση URL
$ _Server ["request_url"]Πλήρης διεύθυνση του πελάτη, συμπεριλαμβανομένης μιας συμβολοσειράς ερωτήματος
$ _Server ["http_referer"]Τη διεύθυνση της σελίδας με την οποία έγινε η αίτηση
$ _Server ["php_self"]Πορεία προς το πρόγραμμα που εκτελείται/Index.php.
$ _Server ["server_name"]Τομέαδικτυακός τόπος
$ _Server ["request_uri"]Τρόπος/Php/php_form.php.

Επεξεργασία εισόδου χρηστών

Το πρόγραμμα επεξεργασίας εισόδου PHP μπορεί να διαχωριστεί από το κείμενο HTML που περιέχει καλούπια εισόδου και μπορείτε να κανονίσετε σε μία σελίδα.

Παράδειγμα 2.

Ένα παράδειγμα επεξεργασίας εισροών

"Μέθοδος \u003d" post "\u003e

Αριθμός κάρτας:



Δεν υπάρχει κουμπί μεταφοράς δεδομένων, επειδή Μια φόρμα που αποτελείται από ένα πεδίο μεταδίδεται αυτόματα όταν πατάτε το πλήκτρο .

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

Παράδειγμα 3.1.

Λίστα



Το αποτέλεσμα του Παραδείγματος 3.1:

Τσάι καφέ ζαμπόν τυρί

Παράδειγμα 3.2.

Λίστα επεξεργασίας από το αρχείο ex1.htm

    "Foreach ($ στοιχείο ως $ αξία) Echo"
  • $ Αξία "; echo"
"; ?>

Παράδειγμα 4. Λήψη τιμών από σημαίες ελέγχου

$ V) (αν ($ v) Echo "Γνωρίζετε τη γλώσσα προγραμματισμού $ K!
"Αλλιώς η Echo" δεν γνωρίζετε τη γλώσσα προγραμματισμού $ k.
"; } } ?>
"Μέθοδος \u003d" POST "\u003e Ποιες γλώσσες προγραμματισμού γνωρίζετε;
Php.
Πίδακας

Το αποτέλεσμα του Παραδείγματος 4:

Ποιες γλώσσες προγραμματισμού γνωρίζετε; Php. Πίδακας

Παράδειγμα 5.

"; ?>
"Μέθοδος \u003d" post "\u003e

Μπορείτε να χειριστείτε μορφές, χωρίς να ανησυχείτε για τα πραγματικά ονόματα πεδίων.

Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε (ανάλογα με τη μέθοδο μετάδοσης) μια συσχετιστική σειρά $ http_get_vars ή $ http_post_vars. Αυτές οι συστοιχίες περιέχουν ένα όνομα / τιμή ζευγών για κάθε στοιχείο της μεταδιδόμενης μορφής. Εάν δεν σας ενδιαφέρει, μπορείτε να χρησιμοποιήσετε μια συσχετιστική συστοιχία $ _request.

ΠΑΡΑΔΕΙΓΜΑ 6.

Επεξεργασία αυθαίρετης εισόδου ανεξάρτητα από τη μέθοδο μεταφοράς $ Αξία) Echo "$ key \u003d\u003d $ αξία
"; ?>

Παράδειγμα 7. Πατώντας το κουμπί χρησιμοποιώντας τον χειριστή "@".

">

Χρησιμοποιώντας τη λειτουργία κεφαλίδας (), στέλνετε την κεφαλίδα του προγράμματος περιήγησης, μπορείτε να ανακατευθύνετε τον χρήστη σε μια νέα σελίδα.

Για παράδειγμα:

Μεταφορά αρχείου στο διακομιστή. Pour αρχείο. Μεταφόρτωση.

Το PHP σας επιτρέπει να μεταφέρετε αρχεία στο διακομιστή. Η φόρμα HTML που έχει σχεδιαστεί για να μεταδίδει το αρχείο πρέπει να περιέχει το όρισμα Ectype \u003d "Multipart / Form-Data".

Επιπλέον, ένα κρυφό πεδίο με το όνομα max_file_size θα πρέπει να βρίσκεται στη φόρμα μπροστά από το αρχείο για να αντιγράψει το αρχείο. Το μέγιστο μέγεθος του μεταδιδόμενου αρχείου πρέπει να καταγράφεται σε αυτό το κρυφό πεδίο (συνήθως όχι περισσότερο από 2 MB).

Το ίδιο το πεδίο είναι να μεταφέρει το αρχείο - το συνηθισμένο στοιχείο εισόδου με το όρισμα τύπου \u003d "αρχείο".

Για παράδειγμα:

"Μέθοδος \u003d" post "\u003e

Αφού μεταφερθεί ο φάκελος στον διακομιστή, λαμβάνει ένα μοναδικό όνομα και αποθηκεύεται στον κατάλογο για προσωρινά αρχεία. Η πλήρης διαδρομή προς το αρχείο καταγράφεται στην παγκόσμια μεταβλητή του οποίου το όνομα αντιστοιχεί στο όνομα του πεδίου για να μεταφέρει αυτό το αρχείο. Επιπλέον, η PHP διατηρεί περισσότερες πληροφορίες σχετικά με το μεταδιδόμενο αρχείο σε άλλες παγκόσμιες μεταβλητές:

Παράδειγμα 8.

Επεξεργασία του αρχείου που μεταφέρεται "Echo" Όνομα: "Αρχεία $ _ [" userfile "] [" Όνομα "]."
"Echo" Μέγεθος: "$ _ Αρχεία [" userfile "] [" μέγεθος "]."
"Echo" Τύπος: ". Αρχεία $ _ [" userfile "] [" Τύπος "]."
"; } ?>
"Μέθοδος \u003d" post "\u003e



Παραδείγματα λήψης αρχείων στο διακομιστή

Εάν υπάρχουν προβλήματα με το διακομιστή Transcoding του αποθηκευμένου αρχείου, το σύμβολο κώδικα 0x00 Αντικατασταθεί με ένα χώρο (σύμβολο κώδικα 0x20), προσθέστε στο αρχείο httpd.conf. Από τον κατάλογο Apache (/ USR / Local / Apache) τις ακόλουθες γραμμές.

CharsTRECODEMULTIPARTFORMS OFF

Καθώς ένα σημαντικό χρονικό διάστημα, στην αρχή της καριέρας του Web Developer, εργάστηκα με τη βάση δεδομένων που δόθηκε όπως ήξερα και δεν ήξερα πολλά. Μαγειωμένα απλά πρωτόγονα αιτήματα, και μερικές φορές εισάγονται ακόμη αιτήματα σε κύκλους. Εκείνη την εποχή, δυστυχώς δεν μπήκα στα χέρια μου, το σωστό βιβλίο στο MySQL και το μάθημα πραγματοποιήθηκε από δείγματα και λάθη. Πολλά άρθρα στο Διαδίκτυο με κάποιο τρόπο δεν ανέφεραν αμέσως σε μένα ένα θαυμάσιο ερώτημα MySQL.
Σε αυτή τη δημοσίευση, θα σας πω για όλες τις πιθανές επιλογές για να συνεργαστούμε με τη συμμετοχή και, επιπλέον, θα παρουσιάσω την αρχή της λειτουργίας κάθε ομάδας - οπτικά.

Θα εξετάσουμε:

  1. Εσωτερική σύνδεση.
  2. Αριστερά ενταχθούν.
  3. Σωστή σύνδεση.
  4. Εξωτερική σύνδεση.
  5. Αριστερή σύνδεση εξαιρουμένης της εσωτερικής σύνδεσης
  6. Δεξιά μέχρι την εξαίρεση της εσωτερικής σύνδεσης
  7. Εξωτερική σύνδεση εξαιρουμένου της εσωτερικής σύνδεσης

Ξεχωριστά, αξίζει να σημειωθεί οι παραγράφους 5.6 και 7. Στην πραγματικότητα, τα αιτήματα αυτά δεν συνδέουν δύο πίνακες, αλλά αντίθετα, οι στήλες που υπάρχουν στην άλλη αποκλείονται από έναν πίνακα. Στην πραγματικότητα, αυτό μπορεί να είναι πολύ χρήσιμο.

Εσωτερική σύνδεση.

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

Δείγμα αιτήματος:

Δείτε τον κωδικό SQL

ΕΠΙΛΕΓΩ< select_list> Από το Table_a A Inner Join Table_B B στο A. Key \u003d B. Key

Αριστερά ενταχθούν.

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

Δείγμα αιτήματος:

Δείτε τον κωδικό SQL

ΕΠΙΛΕΓΩ< select_list> Από το Table_a A Αριστερά Συμμετοχή στο Table_B B στο A. Key \u003d B. Key

Σωστή σύνδεση.

Παρόμοια με το προηγούμενο ερώτημα, αλλά θα επιστρέψει όλες τις στήλες από το δεξιό τραπέζι (καρτέλα Β), καθώς και όλες οι στήλες από τον αριστερό πίνακα (καρτέλα α) που συμπίπτουν με τις στήλες από το δεξιό τραπέζι.

Δείγμα αιτήματος:

Δείτε τον κωδικό SQL

ΕΠΙΛΕΓΩ< select_list> Από το Table_a ένα δεξί σύνδεσμο Table_B B στο A. Key \u003d B. Key

Εξωτερική σύνδεση.

Συχνά, αυτό το αίτημα καταγράφεται ως πλήρης εξωτερική συμμετοχή ή πλήρης συμμετοχή, όλες οι παραλλαγές εκτελούν μία ενέργεια, δηλαδή, επιστρέφουν όλες τις στήλες από τους δύο πίνακες, ενώ οι στήλες συμπίπτων θα καλυφθούν με στήλες από τον αριστερό πίνακα.

Δείγμα αιτήματος:

Δείτε τον κωδικό SQL

ΕΠΙΛΕΓΩ< select_list> Από το Table_a ένα πλήρες εξωτερικό σύνδεσμο Table_B B στο A. Key \u003d B. Key

Αριστερά εκτός σύνδεσης.

Αυτό το αίτημα θα επιστρέψει όλες τις στήλες από τον αριστερό πίνακα (καρτέλα Α), η οποία δεν συμπίπτει με τις στήλες από το δεξιό τραπέζι (καρτέλα β).

Δείγμα αιτήματος:

Δείτε τον κωδικό SQL

Συνεχίζοντας το θέμα:
Λινάρι

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

Νέα άρθρα
/
Δημοφιλής