Προσθήκη δεδομένων στον πίνακα sql php. Php εγγραφή στη βάση δεδομένων mysql. Πρακτικά παραδείγματα. Αποθήκευση εισόδου χρήστη στη βάση δεδομένων

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


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

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

Περνώντας από τα λόγια στις πράξεις, ας ξεκινήσουμε.

Προσθέστε προσαρμοσμένα δεδομένα στη βάση δεδομένων MySql από την ιστοσελίδα

Πρώτο στάδιο: δημιουργία μορφή htmlγια την εισαγωγή δεδομένων

Από την αρχή, πρέπει να προετοιμαστούμε για εργασία με php, MySql και για δοκιμή του γραπτού κώδικα σε τοπικός υπολογιστής... Για αυτό:

1. Εκκινήστε το Denwer στον υπολογιστή σας.

2. Ανοίγω εικονικό δίσκοδημιουργήθηκε από το Ντένβερ (για παράδειγμα, έχω αυτήν τη μονάδα δίσκου "Z"). Ανοίξτε το, μετά: home - localhost - www - δημιουργήστε εκεί νέος φάκελοςκαι δώστε του ένα όνομα (θα δώσω το όνομα "db1").

3. Εάν εργάζεστε στο Adobe Dreamweaver, μεταβείτε στον διαχειριστή τοποθεσίας, κάντε κλικ στο κουμπί "Νέο", επιλέξτε τη διαδρομή προς τον φάκελο που δημιουργήθηκε πρόσφατα ως διαδρομή, στο παραπάνω πεδίο μπορείτε να δώσετε ένα όνομα στον ιστότοπο και, στη συνέχεια, κάντε κλικ στην επιλογή Αποθήκευση - Έγινε. Μετά από όλα αυτά, ο φάκελός σας θα εμφανιστεί στο δεξιό παράθυρο του Adobe Dreamweaver.

1. Τώρα θα δημιουργήσουμε ένα κανονικό αρχείο html(ας το ονομάσουμε info_form.html και ας το αποθηκεύσουμε στον νέο φάκελο db1) και γράψτε τον κωδικό της φόρμας για την εισαγωγή πληροφοριών εκεί. Ο πίνακας χρηστών μας στη βάση δεδομένων new_db έχει 4 πεδία που θα μπορούσε να συμπληρώσει ο χρήστης (το πεδίο id θα συμπληρωθεί αυτόματα). Με βάση αυτό, μπορείτε να δημιουργήσετε κώδικα σαν αυτόν:

Εγγραφο χωρίς τίτλο










Εδώ στην παράμετρο "action" της φόρμας μας υπάρχει ένα αρχείο μορφή.php... Θα είναι ένα αρχείο χειριστή που θα δημιουργήσουμε στη συνέχεια.

Ας δημιουργήσουμε επίσης ένα αρχείο style.css για να μορφοποιήσουμε τη φόρμα μας. Περιλαμβάνεται ήδη στον κώδικα, οπότε το μόνο που μένει είναι να το δημιουργήσετε, να το τοποθετήσετε στον ίδιο φάκελο με το αρχείο html και να γράψετε τον ακόλουθο κώδικα σε αυτόν:

Κύριο μέρος (πλάτος: 400 εικονοστοιχεία, περιθώριο: 0 αυτόματο, φόντο: # F8F4B6;) ετικέτα (οθόνη: μπλοκ, αιώρηση: αριστερά, πλάτος: 150 εικονοστοιχεία, συμπλήρωση: 0 10 εικονοστοιχεία, περιθώριο: 18 εικονοστοιχεία 0 0, στοίχιση κειμένου: δεξιά;) # υποβολή (float: δεξιά, περιθώριο: 5px 50px 10px 0;)

Η φόρμα τώρα μοιάζει με αυτό:

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

Η δημιουργία ενός αρχείου χειριστή είναι η επόμενη εργασία μας.

2. Πάμε μέσα στο φάκελο db1δημιουργήστε ένα φάκελο με το όνομα "Σενάρια"... Σε αυτό θα αποθηκεύσουμε όλα τα σενάρια μας για αλληλεπίδραση με τη βάση δεδομένων MySql.

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

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

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

Ας δημιουργήσουμε λοιπόν ένα νέο αρχείο php, ας το ονομάσουμε σύνδεση.phpκαι βάλτε το στο φάκελο scripts. Σε αυτό θα γράψουμε τον κώδικα για τη σύνδεση με τη βάση δεδομένων μας MySql, καθώς και τον κώδικα που θα αναφέρει σφάλματα εάν παρουσιαστούν. Λάβετε υπόψη ότι θα χρειαστεί να εισαγάγετε το όνομα χρήστη, τον κωδικό πρόσβασής σας και το όνομα της βάσης δεδομένων σας ως παραμέτρους. Ο οικοδεσπότης πρέπει να είναι localhost.

Σφάλμα σύνδεσης στη βάση δεδομένων! ". mysql_error ()."

"); mysql_select_db (" new_db ") // παράμετρος σε αγκύλες (" όνομα της βάσης για σύνδεση με ") ή die ("

Σφάλμα επιλογής βάσης δεδομένων! ". mysql_error ()."

"); ?>

Τώρα ας πάμε στο αρχείο form.php και ας συνδέσουμε το αρχείο connect.php σε αυτό χρησιμοποιώντας τον ακόλουθο κώδικα:

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

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

3. Έχουμε συνδεθεί με επιτυχία στη βάση δεδομένων MySql και τώρα χρειαζόμαστε αποδεχτείτε τα δεδομένα που έχουν εισαχθεί στη φόρμα στο χειριστή αρχείων μας... Οι ιδιότητες "όνομα", που υπάρχουν στο έγγραφο html, θα μας βοηθήσουν σε αυτό.

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

Αφού συνδέσετε το αρχείο connect.php, προσθέστε τον ακόλουθο κώδικα στο αρχείο form.php:

$ first_name = $ _ΑΙΤΗΣΗ ["first_name"]; $ last_name = $ _REQUEST ["last_name"]; $ email = $ _REQUEST ["email"]; $ facebook = $ _ΑΙΤΗΣΗ ["facebook"];

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

$ insert_sql = "ΕΙΣΑΓΩΓΗ ΣΕ χρήστες (όνομα, επώνυμο, email, facebook)". "VALUES (" ($ first_name) "," ($ last_name) "," ($ email) "," ($ facebook) ");"; mysql_query ($ insert_sql);

Εδώ, πρώτα σχηματίζουμε ένα ερώτημα, λέγοντας ότι πρέπει να εισαγάγουμε τις κατάλληλες μεταβλητές στα αντίστοιχα πεδία του πίνακα "χρήστες". Βάζουμε αυτό το ερώτημα στη μεταβλητή "$ insert_sql". Και στη συνέχεια, χρησιμοποιώντας την ειδική συνάρτηση mysql_query, εκτελούμε αυτό το ερώτημα.

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

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

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

Δεύτερον, έχουμε ένα πεδίο στο Facebook. Εάν στο μέλλον θέλουμε να εμφανίζουμε αυτές τις πληροφορίες ως σύνδεσμο, τότε θα πρέπει να φροντίσουμε ώστε τα δεδομένα σε αυτό το πεδίο να αποθηκεύονται στη σωστή μορφή (δηλαδή «http://www.facebook.com/ facebook id»). Αλλά ο χρήστης δεν θα εισάγει πάντα αυτά τα δεδομένα όπως τα χρειαζόμαστε. Μπορεί να εισάγει: "www.facebook.com/ facebook id", "facebook.com/ facebook id" ή απλά "/ facebook id".

Αυτές οι καταστάσεις πρέπει να αποφεύγονται. Για να γίνει αυτό, ας αλλάξουμε τον κώδικα μας. Κόβουμε πιθανούς επιπλέον χώρους χρησιμοποιώντας τη λειτουργία τακτοποίηση, και η συνάρτηση θα ελέγξει την ορθότητα του καταχωρημένου url για το facebook preg_match... Έτσι, ολόκληρος ο κώδικας του αρχείου form.php θα μοιάζει με αυτό:

Εγγραφο χωρίς τίτλο Νέα εγγραφή έχει εισαχθεί στη βάση δεδομένων!

"; ?>

Σχετικά με τη λειτουργία preg_match:
Αυτή είναι μια συνάρτηση για αναζήτηση με κανονικές εκφράσεις.

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

Η συνάρτηση επιστρέφει μόνο την πρώτη αντιστοίχιση: 0 - εάν δεν υπάρχουν αντιστοιχίσεις, 1 - εάν υπάρχει αντιστοιχία.

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

Σε αυτό θα τελειώσω αυτό το μάθημα. Μπορείτε να κατεβάσετε όλα τα αρχεία αυτού του μαθήματος στην πηγή (απλώς μην ξεχάσετε να αλλάξετε τις παραμέτρους σε δικές σας στο αρχείο connect.php).

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

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

Καλή τύχη και τα λέμε στο επόμενο μάθημα!

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

Προσθήκη εγγραφών με το phpMyAdmin

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

Μπαίνω ΝΕΑ ΠΛΗΡΟΦΟΡΙΑστον πίνακα, θα πρέπει να εισαγάγετε το πρόγραμμα ως διαχειριστής. Στη συνέχεια, στις λίστες στα αριστερά, επιλέξτε την απαιτούμενη βάση και τον πίνακα. Στη συνέχεια, μεταβείτε στο στοιχείο "Εισαγωγή" στο επάνω μενού.

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

Το παραπάνω στιγμιότυπο οθόνης δείχνει ότι ο τροποποιημένος πίνακας "Ζώα" αποτελείται από δύο στήλες (πεδία): id και όνομα. Η δεύτερη ενότητα παραθέτει τον τύπο καθεμιάς από τις στήλες. Χρειάζεται μόνο να εισαγάγουμε μια τιμή για το πεδίο ονόματος, καθώς η στήλη id είναι το πρωτεύον κλειδί και προσαυξάνεται αυτόματα όταν δημιουργείται ο πίνακας. Αυτό σημαίνει ότι η τιμή του πεδίου id θα δημιουργηθεί αυτόματα από τη MySQL προσθέτοντας 1 στην προηγούμενη ακέραια τιμή.

Για να μάθετε ποιο πεδίο εγγραφών δεδομένων στη MySQL είναι το πρωτεύον κλειδί, στο phpMyAdmin μεταβείτε στο μενού (με επιλεγμένο τον πίνακα στα αριστερά στη λίστα) στην καρτέλα "Δομή" του επάνω μενού. Ακολουθεί μια περιγραφή όλων των πεδίων του πίνακα, του τύπου τους και πρόσθετα χαρακτηριστικά.

Εισαγωγή δεδομένων με χρήση ερωτημάτων SQL

Αλλά το phpMyAdmin είναι απλώς ένα κέλυφος και οι πραγματικοί διαχειριστές "μιλούν" στον διακομιστή MySQL χρησιμοποιώντας γλώσσα δομημένης αναζήτησης. Δηλαδή του «μιλούν» σε SQL. Δεδομένου ότι προσπαθούμε να γίνουμε πραγματικοί επαγγελματίες, θα «βουτήξουμε» λίγο στη μελέτη των εντολών SQL στα πλαίσια αυτού του θέματος. Ακολουθεί ένα ερώτημα, εισάγοντας το οποίο στο πεδίο "SQL", θα δημιουργήσετε την ίδια βάση δεδομένων:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ Ζώο (id MEDIUMINT NOT NULL AUTO_INCREMENT, όνομα CHAR (30) NOT NULL, PRIMARY KEY (id)).

CREATE TABLE Animal (αναγνωριστικό MEDIUMINT NOT NULL AUTO_INCREMENT,

όνομα CHAR (30) NOT NULL, PRIMARY KEY (id));

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

Κωδικός αιτήματος:

INSERT INTO `my_db1`.`animal` (` id`, `name`) ΤΙΜΕΣ (NULL," Cat ");

ΕΙΣΑΓΩΓΗ ΣΤΟ "my_db1". "ζώο" ("id", "όνομα") ΤΙΜΕΣ (NULL, "Cat");

Ας το ρίξουμε μια πιο προσεκτική ματιά. Σε SQL για ένθετο νέα γραμμήο πίνακας χρησιμοποιεί την πρόταση INSERT. Λέει στον διακομιστή να εισαγάγει τις καθορισμένες τιμές στα πεδία id και όνομα (VALUES (NULL, ‘Cat’).

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

Πώς να εισαγάγετε μια εγγραφή χρησιμοποιώντας PHP

Όλα όσα εξετάσαμε είναι απλώς ένα «προοίμιο» της κύριας δράσης στην οποία η γλώσσα προγραμματισμού PHP από την πλευρά του διακομιστή «His Highness» μπαίνει στη σκηνή. Είναι χάρη σε αυτόν που η MySQL ως DBMS έχει γίνει τόσο διαδεδομένη στον Ιστό.
Ένα μεγάλο μέρος του Παγκόσμιου Ιστού είναι χτισμένο στη σύνδεση μεταξύ αυτών των δύο τεχνολογιών του Διαδικτύου. Όπου και να κοιτάξετε, θα τα βρείτε παντού: σε σύγχρονα CMS, «αυτόγραφες» μηχανές και στον διακομιστή.

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

$ con_str = mysql_connect ("localhost", "root", "", "db1"); if (mysql_connect ("localhost", "root")) (echo "Hello !!";) mysql_select_db ("db1", $ con_str); $ query_str = "INSERT INTO` db1`.`animal` (` id`, `name`) VALUES (NULL," dog ")"; mysql_query ($ query_str); mysql_close ();

$ con_str = mysql_connect ("localhost", "root", "", "db1");

if (mysql_connect ("localhost", "root")) (

ηχώ "Γεια σου!!" ;

mysql_select_db ("db1", $ con_str);

$ query_str = "INSERT INTO` db1`.`animal` (` id ', `name`) VALUES (NULL," dog ")";

mysql_query ($ query_str);

mysql_close ();

Αυτός ο κώδικας πρέπει να επικολληθεί σε ένα αρχείο PHP και να τοποθετηθεί στην πλευρά του διακομιστή.

Χρησιμοποιώντας τη συνάρτηση mysql_connect (), συνδέουμε τον διακομιστή της βάσης δεδομένων Δεδομένα MySQL... Η συνάρτηση δέχεται τον κεντρικό υπολογιστή, το όνομα χρήστη DBMS, τον κωδικό πρόσβασης και το όνομα της βάσης δεδομένων για σύνδεση ως ορίσματα. Έχουμε έναν κενό κωδικό πρόσβασης επειδή χρησιμοποιούμε διακομιστή εγκατεστημένο στο τοπικό μηχάνημα (πελάτης).

Για να επιδείξετε όλα τα περιγραφόμενα παραδείγματα εγγραφής σε μια βάση δεδομένων MySQL με χρησιμοποιώντας PHPχρησιμοποιήσαμε το Denver Gentleman's Kit. Περιλαμβάνει τοπικός διακομιστής Apache, διακομιστής MySQL, phpMyAdmin και μερικά άλλα χρήσιμα εργαλεία για τη δημιουργία και τη δοκιμή κώδικα.

Στη συνέχεια, στο λογικό μπλοκ if, ελέγξαμε για σύνδεση με τον διακομιστή της βάσης δεδομένων. Στη συνέχεια, στη συνάρτηση mysql_select_db (), ορίσαμε τη βάση στην οποία θα συνδεθούμε. Χρησιμοποιώντας τη συνάρτηση mysql_query (), ξεκινήσαμε το ερώτημα SQL γραμμένο στη μεταβλητή $ query_str για εκτέλεση. Και έκλεισε στο τέλος εδραιωμένη σύνδεση(συνάρτηση mysql_close ()). Τώρα, αν κοιτάξουμε στο θηριοτροφείο μας (επιτραπέζιο ζώο), θα βρούμε ένα νέο «κατοικίδιο» εκεί.

Για να το γράψετε σε MySQL PHP «ευγενικά» παρέχετε όλο το απαραίτητο σύνολο λειτουργιών. Το κύριο πράγμα στο οποίο οι αρχάριοι «καίγονται» πότε χρησιμοποιώντας SQLστον κώδικα του προγράμματος - πρόκειται για ορθογραφικό λάθος ερωτημάτων, παραβίαση σύνταξης και εναλλαγή χαρακτήρων για διαφυγή (εισαγωγικά).

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

Όπως μπορείτε να δείτε, με τη βοήθεια της MySQL μπορείτε να «συναρμολογήσετε» το θηριοτροφείο σας και να αλλάξετε σωστά τις λέξεις οποιουδήποτε «τραγουδιού». Και η PHP είναι ιδανική για εγγραφή σε μια βάση δεδομένων MySQL, γι' αυτό σας συμβουλεύουμε να κάνετε μια "στενή" φιλία με αυτήν την "εξαιρετική" γλώσσα προγραμματισμού!

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

Πριν ξεκινήσετε, ελέγξτε για τα ακόλουθα:

  • Πρόσβαση στον πίνακα ελέγχου φιλοξενίας σας

Βήμα 1 - δημιουργία του πίνακα

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

Αφού μπείτε στη σελίδα phpMyAdmin, θα δείτε μια παρόμοια εικόνα:

Ας δημιουργήσουμε έναν πίνακα με το όνομα Φοιτητέςγια τη βάση δεδομένων μας u266072517_name... Μπορείτε να δημιουργήσετε έναν νέο πίνακα κάνοντας κλικ στο κουμπί Δημιουργία πίνακα... Μετά από αυτό θα δείτε ΝΕΑ ΣΕΛΙΔΑόπου μπορείτε να εισάγετε όλα τα απαιτούμενα δεδομένα για τον πίνακά σας:

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

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

  • ΟνομαΕίναι το όνομα του τομέα σας. Θα εμφανίζεται στην κορυφή του τραπεζιού σας.
  • Τύπος- εδώ μπορείτε να ορίσετε τον τύπο πεδίου. Για παράδειγμα, επιλέγουμε varcharγιατί εδώ πρέπει να εισάγουμε μια συμβολοσειρά με όνομα (που περιέχει γράμματα και όχι αριθμούς).
  • Μήκος / Τιμές- χρησιμοποιείται για να ορίσετε το μέγιστο μήκος της καταχώρισής σας σε αυτό το πεδίο.
  • Δείκτης- χρησιμοποιούμε το ευρετήριο "Κύριο" για το πεδίο "Αναγνωριστικό". Κατά τη δημιουργία ενός πίνακα, συνιστάται να έχετε ένα πεδίο ταυτότητας. Χρησιμοποιείται για την ευρετηρίαση εγγραφών σε έναν πίνακα κατά τη δημιουργία σχέσεων μεταξύ πινάκων. Μπορεί επίσης να σημειωθεί εδώ "ΟΛΑ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΝΤΑΙ"που σημαίνει Αυτόματη αύξηση... Αυτή η ρύθμιση θα αυξήσει αυτόματα το ευρετήριο (1,2,3,4…).

Κάντε κλικ στο Αποθηκεύσετεκαι το τραπέζι σας θα δημιουργηθεί.

Βήμα 2 - Δημιουργία κώδικα PHP και προσθήκη καταχώρισης στον πίνακα MySQL

Επιλογή 1 - Μέθοδος MySQLi

Πρώτα απ 'όλα, πρέπει να δημιουργήσετε μια σύνδεση με τη βάση δεδομένων, σύμφωνα με το προηγούμενο σεμινάριο μας. Μετά από αυτό, μπορούμε να συνεχίσουμε με το ερώτημα SQL για να προσθέσουμε μια εγγραφή στον πίνακα MySQL - ΕΙΣΑΓΕΤΕ... Ακολουθεί ένα πλήρες παράδειγμα κώδικα με σύνδεση και μέθοδο εισαγωγής:

". mysqli_error ($ conn);) mysqli_close ($ conn);?>

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

Ας ξεκινήσουμε με τη γραμμή 19 :

$ sql = "INSERT INTO Students (όνομα, επώνυμο, email) ΤΙΜΕΣ (" Thom "," Vial "," [email προστατευμένο]")";

Αυτή είναι η πιο σημαντική γραμμή κώδικα και κάνει όλα όσα περιγράφουμε σε αυτό το σεμινάριο - προσθέτοντας μια εγγραφή σε έναν πίνακα MySQL στη βάση δεδομένων. ΕΙΣΑΓΩΓΗ ΣΤΟΕίναι μια έκφραση που προσθέτει μια εγγραφή στον καθορισμένο πίνακα βάσης δεδομένων MySQL. Στο παράδειγμά μας, προσθέτουμε δεδομένα στον πίνακα Φοιτητές.

Προχωρώντας, μέσα σε παρένθεση, ορίζουμε τα πεδία του πίνακα, τιμές στις οποίες θα προσθέσουμε: (όνομα, επώνυμο, email)... Τα δεδομένα θα προστεθούν με συγκεκριμένη σειρά. Αν γράψουμε (email, επώνυμο, όνομα), οι τιμές θα προστεθούν με διαφορετική σειρά.

Το επόμενο μέρος του νοήματος ΑΞΙΕΣ... Εδώ ορίζουμε τις τιμές μας στα πεδία που καθορίστηκαν προηγουμένως. Έτσι, κάθε πεδίο θα λάβει τη δική του τιμή. Για παράδειγμα, στην περίπτωσή μας θα είναι κάτι σαν: όνομα = Thom, επώνυμο = Φιαλίδιο, email = [email προστατευμένο] .

Είναι σημαντικό να σημειωθεί ότι εδώ σχηματίζουμε Ερώτημα SQLχρησιμοποιώντας κώδικα PHP. Τα ερωτήματα SQL πρέπει να περικλείονται σε εισαγωγικά. Στο παράδειγμά μας, όλα μεταξύ των εισαγωγικών και των ακόλουθων $ sql = είναι ένα ερώτημα SQL.

Το επόμενο μέρος του κώδικα ( 20 – 22 γραμμές) εκτελεί το αίτημά μας και ελέγχει εάν το αίτημα ήταν επιτυχές:

Εάν (mysqli_query ($ conn, $ sql)) (echo "Η νέα εγγραφή δημιουργήθηκε με επιτυχία";)

Εάν το αίτημα εκτελέστηκε σωστά, εμφανίζεται ένα μήνυμα επιτυχίας.

Και το τελευταίο μέρος ( 22 – 24 γραμμές) εμφανίζει ένα άλλο μήνυμα σε περίπτωση που το αίτημά μας αποτύχει:

Άλλο (ηχώ "Σφάλμα:". $ Sql. "
". mysqli_error ($ conn);)

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

Επιλογή 2 - Μέθοδος αντικειμένων δεδομένων PHP (P HP D ata O αντικείμενο)

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

$ the_Object-> the_Method ();

Το PDO σάς επιτρέπει να «προετοιμάζετε» κώδικα SQL πριν τον εκτελέσετε. Το ερώτημα SQL αξιολογείται και προσαρμόζεται πριν από την εκτέλεση. Έτσι, μια απλή επίθεση από SQL injectionμπορεί να γίνει συμπληρώνοντας τον κώδικα SQL στο πεδίο της φόρμας. Για παράδειγμα:

// Ο χρήστης το γράφει στο πεδίο ονόματος χρήστη μιας φόρμας σύνδεσης thom "; DROP DATABASE user_table; // Το τελικό ερώτημα γίνεται αυτό" SELECT * FROM user_table WHERE username = thom "; DROP DATABASE user_table;

Δεδομένου ότι ο κώδικας SQL είναι συντακτικά σωστός, το ερωτηματικό κάνει από DROP DATABASE user_tableνέο ερώτημα SQL και ο πίνακας χρηστών σας διαγράφεται. Οι προετοιμασμένες εκφράσεις δεν επιτρέπουν χαρακτήρες και ; για να συμπληρώσετε το αρχικό αίτημα και τη δήλωση DROP DATABASEδεν θα εκτελεστεί ποτέ.

Είναι πάνταχρησιμοποιήστε έτοιμες δηλώσεις κατά την αποστολή ή λήψη δεδομένων από μια βάση δεδομένων με ΠΟΠ.

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

Στη σωστή μορφή, ο κώδικας μοιάζει με:

$ servername = "mysql.hostinger.com"; $ database = "u266072517_name"; $ username = "u266072517_user"; $ κωδικός = "buystuffpwd"; $ sql = "mysql: host = $όνομα διακομιστή; dbname = βάση δεδομένων $;"; $ dsn_Options =; // Δημιουργία νέας σύνδεσης με τη βάση δεδομένων MySQL χρησιμοποιώντας PDO, $ my_Db_Connection είναι ένα αντικείμενο δοκιμής ($ my_Db_Connection = νέο PDO ($ sql, $ όνομα χρήστη, $ κωδικός πρόσβασης, $ dsn_Options); echo "Συνδέθηκε με επιτυχία";) catch (PDOException $ σφάλμα) (ηχώ "Σφάλμα σύνδεσης:". $ error-> getMessage ();) // Ορίστε τις μεταβλητές για το άτομο που θέλουμε να προσθέσουμε στη βάση δεδομένων $ first_Name = "Thom"; $ last_Name = "Φιαλίδιο"; $ email = " [email προστατευμένο]"; // Εδώ δημιουργούμε μια μεταβλητή που καλεί τη μέθοδο προετοιμασία () του αντικειμένου της βάσης δεδομένων // Το ερώτημα SQL που θέλετε να εκτελέσετε εισάγεται ως παράμετρος και οι θέσεις κράτησης θέσης γράφονται ως εξής: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> προετοιμάζω ("INSERT INTO Students (όνομα, επώνυμο, email) VALUES (: first_name,: last_name,: email)"); // Τώρα λέμε στο σενάριο σε ποια μεταβλητή αναφέρεται στην πραγματικότητα κάθε placeholder χρησιμοποιώντας τη μέθοδο bindParam () // First Η παράμετρος είναι το σύμβολο κράτησης θέσης στην παραπάνω δήλωση - η δεύτερη παράμετρος είναι μια μεταβλητή που πρέπει να αναφέρεται στο $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: email, $ email); // Εκτελέστε το ερώτημα χρησιμοποιώντας τα δεδομένα που μόλις ορίσαμε // Η μέθοδος execute () επιστρέφει TRUE εάν είναι επιτυχής και FALSE εάν δεν είναι, επιτρέποντάς σας να γράψετε τα δικά σας μηνύματα εδώ εάν ( $ my_Insert_Statement-> execute ()) (echo "Η νέα εγγραφή δημιουργήθηκε με επιτυχία";) el se (ηχώ "Δεν είναι δυνατή η δημιουργία εγγραφής"; ) // Σε αυτό το σημείο μπορείτε να αλλάξετε τα δεδομένα των μεταβλητών και να τα εκτελέσετε ξανά για να προσθέσετε περισσότερα δεδομένα στη βάση δεδομένων $ first_Name = "John"; $ last_Name = "Σμιθ"; $ email = " [email προστατευμένο]"; $ my_Insert_Statement-> execute (); // Εκτελέστε ξανά τώρα που οι μεταβλητές έχουν αλλάξει εάν ($ my_Insert_Statement-> execute ()) (echo" Νέα εγγραφή δημιουργήθηκε με επιτυχία ";) else (echo" Δεν είναι δυνατή η δημιουργία εγγραφής "; )

Στις γραμμές 28, 29 και 30 χρησιμοποιούμε τη μέθοδο bindParam ()αντικείμενο βάσης δεδομένων. Υπάρχει και μέθοδος bindValue ()διαφορετικό από το προηγούμενο.

  • bindParam () -αυτή η μέθοδος μετράει τα δεδομένα όταν η μέθοδος εκτέλεση ()επιτυγχάνεται. Την πρώτη φορά που το σενάριο φτάνει στη μέθοδο εκτέλεση ()το βλέπει αυτό $ first_Nameαναφέρεται στο "Thom", δεσμεύει αυτήν την τιμή και εκτελεί το αίτημα. Όταν το σενάριο φτάσει στη μέθοδο για δεύτερη φορά εκτέλεση ()αυτό φαίνεται $ first_Nameτώρα αναφέρεται στο "John", δεσμεύει αυτήν την τιμή και εκτελεί ξανά το ερώτημα με τη νέα τιμή. Είναι σημαντικό να κατανοήσουμε ότι δημιουργούμε ένα αίτημα μία φορά και στη συνέχεια αντικαθιστούμε διαφορετικά δεδομένα σε διαφορετικά σημεία του σεναρίου.
  • bindValue () -Αυτή η μέθοδος αξιολογεί τα δεδομένα μόλις φτάσει η ουρά. Αφού η αξία $ first_Nameορίστηκε σε "Thom" όταν φτάσαμε στη μέθοδο bindValue (), θα χρησιμοποιηθεί κατά την κλήση της μεθόδου εκτέλεση ()Για $ my_Insert_Statement.

Λάβετε υπόψη ότι επαναχρησιμοποιούμε τη μεταβλητή $ first_Nameκαι δώστε του μια νέα αξία για δεύτερη φορά. Εάν ελέγξετε τη βάση δεδομένων σας μετά την εκτέλεση αυτού του σεναρίου, και τα δύο ονόματα θα είναι εκεί, σε αντίθεση με την τιμή της μεταβλητής $ first_Nameθα ισούται με το "John" στο τέλος αυτού του σεναρίου. Να θυμάστε ότι η PHP αξιολογεί τα περιεχόμενα του σεναρίου πριν το εκτελέσει.

Εάν αλλάξετε το σενάριό σας με αντικατάσταση bindParamεπί bindValue, θα προσθέσετε το "Thom Vial" στη βάση δεδομένων MySQL δύο φορές στη βάση δεδομένων και ο John Smith θα αγνοηθεί.

Βήμα 3 - Έλεγχος της επιτυχίας της υλοποίησης και επίλυση γενικών ερωτήσεων

Εάν το ερώτημα που εκτελέσαμε στη βάση δεδομένων MySQL πετύχει, θα δούμε ένα μήνυμα όπως αυτό:

Επίλυση κοινών λαθών

MySQLi

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

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

"Σφάλμα: INSERT INTO Students (όνομα, επώνυμο, email) VALUES (" Thom "," Vial "," [email προστατευμένο]") Έχετε ένα σφάλμα στη σύνταξη SQL. Ελέγξτε το εγχειρίδιο που αντιστοιχεί στην έκδοση του διακομιστή MySQL για τη σωστή σύνταξη που θα χρησιμοποιήσετε κοντά" (όνομα, επώνυμο, email) VALUES ("Thom", "Vial", " [email προστατευμένο]")" στη γραμμή 1 "

Έγινε ένα συντακτικό σφάλμα που προκαλεί την αποτυχία του σεναρίου μας. Το σφάλμα ήταν εδώ:

$ sql = "INSERT INTO Students (όνομα, επώνυμο, email) ΤΙΜΕΣ (" Thom "," Vial "," [email προστατευμένο]")";

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

Π.Ο.Π

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

Μοιραίο σφάλμα: Μη καταγεγραμμένη εξαίρεση "PDOException" με μήνυμα "SQLSTATE: Σφάλμα σύνταξης ή παραβίαση πρόσβασης: 1064 Έχετε ένα σφάλμα στη σύνταξη SQL. ελέγξτε το εγχειρίδιο που αντιστοιχεί στην έκδοση του διακομιστή MySQL για τη σωστή σύνταξη που θα χρησιμοποιήσετε κοντά στο "(όνομα, επώνυμο, email) VALUES (" Thom "," Vial "," [email προστατευμένο]")" στη γραμμή 1 "

Άλλα προβλήματα που μπορεί να αντιμετωπίσετε:

  • Τα πεδία έχουν οριστεί εσφαλμένα (ανύπαρκτα πεδία ή λάθη στην ορθογραφία των ονομάτων).
  • Αναντιστοιχία τύπου τιμής με τύπο πεδίου. Για παράδειγμα, όταν θέλουμε να εκχωρήσουμε μια τιμή σε έναν αριθμό 47 πεδίο Ονομα, λαμβάνουμε ένα σφάλμα επειδή η τιμή θεωρείται ότι είναι μια συμβολοσειρά. Αλλά, εάν δώσετε έναν αριθμό σε εισαγωγικά, για παράδειγμα “47” , δεν θα υπάρξει σφάλμα, γιατί ο αριθμός μας θα γραφτεί ως συμβολοσειρά σε αυτό το πεδίο.
  • Έγινε προσπάθεια εισαγωγής δεδομένων σε έναν πίνακα που δεν υπάρχει ή σφάλμα στην ορθογραφία του ονόματος του πίνακα.

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

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

συμπέρασμα

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

Σε αυτό το άρθρο, θα εξετάσουμε πώς να χρησιμοποιήσετε την PHP για την εισαγωγή σειρών σε μια βάση δεδομένων MySQL.

Βήμα 1 - δημιουργία του πίνακα

Αρχικά, πρέπει να δημιουργήσετε έναν πίνακα για τα δεδομένα. Αυτή είναι μια απλή διαδικασία που μπορεί να γίνει χρησιμοποιώντας το phpMyAdmin στον πίνακα ελέγχου φιλοξενίας σας.

Αφού συνδεθείτε στο phpMyAdmin, θα δείτε μια διεπαφή όπως αυτή:

Ας δημιουργήσουμε έναν πίνακα με το όνομα Students στη βάση δεδομένων u266072517_name κάνοντας κλικ στο κουμπί "Δημιουργία πίνακα". Μετά από αυτό, θα δούμε μια νέα σελίδα στην οποία ορίζουμε όλες τις απαραίτητες παραμέτρους του πίνακα:

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

Επιλογές στηλών:

  • Όνομα είναι το όνομα της στήλης που εμφανίζεται στην κορυφή του πίνακα.
  • Τύπος - ο τύπος της στήλης. Για παράδειγμα, επιλέξαμε varchar επειδή θα εισάγουμε τιμές συμβολοσειράς.
  • Μήκος / Τιμές - Χρησιμοποιείται για να υποδείξει το μέγιστο μήκος που μπορεί να έχει μια καταχώρηση σε αυτήν τη στήλη.
  • Ευρετήριο - χρησιμοποιήσαμε το ευρετήριο "Κύριο" για το πεδίο "ID". Συνιστάται να χρησιμοποιείτε μόνο μία στήλη ως πρωτεύον κλειδί κατά τη δημιουργία ενός πίνακα. Χρησιμοποιείται για την καταχώριση εγγραφών σε έναν πίνακα και απαιτείται κατά τη δημιουργία ενός πίνακα. Σημείωσα επίσης "A_I", που σημαίνει "Auto Increment" - η παράμετρος για την αυτόματη εκχώρηση του αριθμού των εγγραφών (1,2,3,4 ...).
    Κάντε κλικ στο κουμπί "Αποθήκευση" και ο πίνακας θα δημιουργηθεί.

Βήμα 2. Γράψιμο κώδικα PHP για την εισαγωγή δεδομένων στη MySQL.

Επιλογή 1 - Μέθοδος MySQLi

Πρώτα πρέπει να δημιουργήσετε μια σύνδεση με τη βάση δεδομένων. Μετά από αυτό, χρησιμοποιούμε το ερώτημα SQL INSERT. Ολοκληρωμένο παράδειγμακώδικας:

". mysqli_error ($ conn);) mysqli_close ($ conn);?>

Το πρώτο μέρος του κώδικα (γραμμές 3-18) προορίζεται για σύνδεση με τη βάση δεδομένων.

Ας ξεκινήσουμε με τη γραμμή 19:

$ sql = "INSERT INTO Students (όνομα, επώνυμο, email) ΤΙΜΕΣ (" Thom "," Vial "," [email προστατευμένο]")";

Εισάγει δεδομένα σε μια βάση δεδομένων MySQL. Το INSERT INTO είναι μια πρόταση που προσθέτει δεδομένα στον καθορισμένο πίνακα. Στο παράδειγμά μας, τα δεδομένα προστίθενται στον πίνακα Students.

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

Το επόμενο μέρος είναι ο τελεστής VALUES. Εδώ καθορίζουμε τιμές για τις στήλες: όνομα = Thom, επώνυμο = Φιαλίδιο, email = [email προστατευμένο]

Εκτελέσαμε ένα αίτημα χρησιμοποιώντας κώδικα PHP. Σε κώδικα, τα ερωτήματα SQL πρέπει να αναφέρονται. Το επόμενο μέρος του κώδικα (γραμμές 20-22) ελέγχει εάν το αίτημά μας ήταν επιτυχές:

if (mysqli_query ($ conn, $ sql)) (echo "Η νέα εγγραφή δημιουργήθηκε με επιτυχία";)

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

Και το τελευταίο μέρος (22 - 24 γραμμές) εμφανίζει μια ειδοποίηση εάν το αίτημα δεν ήταν επιτυχές:

else (echo "Σφάλμα:". $ sql. "
". mysqli_error ($ conn);)

Επιλογή 2 - Μέθοδος PHP Data Object (PDO).

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

$ the_Object-> the_Method ();

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

Δεδομένου ότι αυτό είναι συντακτικά σωστή SQL, το ερωτηματικό κάνει το DROP DATABASE user_table ένα νέο ερώτημα SQL και ο πίνακας χρηστών απορρίπτεται. Οι προετοιμασμένες εκφράσεις (δεσμευμένες μεταβλητές) δεν επιτρέπουν σε ερωτηματικά και εισαγωγικά να ολοκληρώσουν το αρχικό ερώτημα, επομένως η εντολή DROP DATABASE δεν θα εκτελεστεί ποτέ.

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

Σωστός κωδικός:

getMessage (); ) // Ορίστε μεταβλητές για το άτομο που θέλουμε να προσθέσουμε στη βάση δεδομένων $ first_Name = "Thom"; $ last_Name = "Φιαλίδιο"; $ email = " [email προστατευμένο]"? " INSERT INTO Students (όνομα, επώνυμο, email) VALUES (: first_name,: last_name,: email) "); // Τώρα λέμε στο σενάριο ποια μεταβλητή αναφέρεται σε κάθε placeholder για να χρησιμοποιήσει τη μέθοδο bindParam () // Η πρώτη παράμετρος είναι το σύμβολο κράτησης θέσης στην παραπάνω δήλωση , η δεύτερη είναι η μεταβλητή που πρέπει να αναφέρεται στο $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: email, $ email); // Εκτελέστε το αίτημα χρησιμοποιώντας τα δεδομένα που μόλις ορίσαμε // Η μέθοδος execute () επιστρέφει TRUE εάν είναι επιτυχής και FALSE εάν όχι, δίνοντάς σας την επιλογή να εκτυπώσετε το δικό σας μήνυμα εάν ($ my_Insert_Statement-> execute ( )) (ηχώ "New reco rdδημιουργήθηκε με επιτυχία "; ) else (echo "Δεν είναι δυνατή η δημιουργία εγγραφής";) // Σε αυτό το σημείο μπορείτε να αλλάξετε τα δεδομένα της μεταβλητής και να εκτελέσετε ένα ερώτημα για να προσθέσετε άλλα δεδομένα στα δεδομένα της βάσης δεδομένων στη βάση δεδομένων $ first_Name = "John"; $ last_Name = "Σμιθ"; $ email = " [email προστατευμένο]"; $ my_Insert_Statement-> execute (); // Εκτέλεση ξανά όταν αλλάξει η μεταβλητή εάν ($ my_Insert_Statement-> execute ()) (echo" Νέα εγγραφή δημιουργήθηκε με επιτυχία ";) else (echo" Δεν είναι δυνατή η δημιουργία εγγραφής ";

Στις γραμμές 28, 29 και 30 χρησιμοποιούμε τη μέθοδο bindParam () του αντικειμένου της βάσης δεδομένων. Υπάρχει επίσης μια μέθοδος bindValue (), η οποία είναι πολύ διαφορετική από την προηγούμενη.

  • bindParam () - Αυτή η μέθοδος αξιολογεί τα δεδομένα όταν επιτευχθεί η μέθοδος execute (). Την πρώτη φορά που το σενάριο φτάνει στη μέθοδο execute (), βλέπει ότι το $ first_Name ταιριάζει με το "Thom". Στη συνέχεια δεσμεύει αυτήν την τιμή και εκτελεί το αίτημα. Όταν το σενάριο φτάσει στη δεύτερη μέθοδο execute (), βλέπει ότι το $ first_Name ταιριάζει πλέον με το "John". Στη συνέχεια, δεσμεύει αυτήν την τιμή και ξεκινά ξανά το ερώτημα με νέες τιμές. Είναι σημαντικό να θυμόμαστε ότι κάποτε ορίσαμε ένα ερώτημα και το χρησιμοποιήσαμε ξανά με διαφορετικά δεδομένα σε διαφορετικά σημεία του σεναρίου.
  • bindValue () - Αυτή η μέθοδος αξιολογεί τα δεδομένα αμέσως μόλις επιτευχθεί bindValue (). Εφόσον το $ first_Name ορίστηκε σε "Thom", όταν επιτευχθεί το bindValue (), θα χρησιμοποιείται κάθε φορά που καλείται η εκτέλεση () στο $ my_Insert_Statement.
    Σημειώστε ότι επαναχρησιμοποιούμε τη μεταβλητή $ first_Name και της εκχωρούμε μια νέα τιμή για δεύτερη φορά. Μετά την εκτέλεση του σεναρίου, και τα δύο ονόματα θα υποδεικνύονται στη βάση δεδομένων, παρά το γεγονός ότι η μεταβλητή $ first_Name στο τέλος του σεναρίου έχει την τιμή "John". Να θυμάστε ότι η PHP ελέγχει ολόκληρο το σενάριο πριν το εκτελέσει.

Εάν ενημερώσετε το σενάριο για να αντικαταστήσετε το bindParam με το bindValue, θα εισαγάγετε το "Thom Vial" στη βάση δεδομένων δύο φορές και ο John Smith θα αγνοηθεί.

Βήμα 3 - Επιβεβαίωση της επιτυχίας και επίλυση προβλημάτων

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

Εξάλειψη κοινών λαθών

MySQLi

Διαφορετικά, θα εμφανιστεί ένα μήνυμα σφάλματος. Για παράδειγμα, ας κάνουμε ένα συντακτικό σφάλμα στον κώδικα και λαμβάνουμε το εξής:

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

"Σφάλμα: INSERT INTO Students (όνομα, επώνυμο, email) VALUES (" Thom "," Vial "," [email προστατευμένο]") Έχετε ένα σφάλμα στη σύνταξη SQL, ελέγξτε το εγχειρίδιο που αντιστοιχεί στην έκδοση του διακομιστή MySQL για τη χρήση της σύνταξης δικαιωμάτων κοντά" (όνομα, επώνυμο, email) VALUES ("Thom", "Vial", " [email προστατευμένο]")" στη γραμμή 1 "

Έγινε ένα συντακτικό σφάλμα που προκάλεσε την αποτυχία του σεναρίου. Το σφάλμα ήταν εδώ:

$ sql = "INSERT INTO Students (όνομα, επώνυμο, email) ΤΙΜΕΣ (" Thom "," Vial "," [email προστατευμένο]")";

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

Π.Ο.Π

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

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

Μοιραίο σφάλμα: Uncaughtexception "PDOException" με μήνυμα "SQLSTATE: Σφάλμα σύνταξης ή παραβίαση πρόσβασης: 1064 Έχετε ένα σφάλμα στη σύνταξη SQL. ελέγξτε το εγχειρίδιο που αντιστοιχεί στην έκδοση του διακομιστή MySQL για τη σύνταξη δικαιωμάτων που θα χρησιμοποιήσετε κοντά στο "(όνομα, επώνυμο, email) VALUES (" Thom "," Vial "," [email προστατευμένο]")" στη γραμμή 1 "

Άλλα πιθανά προβλήματα:

  • Οι στήλες είναι λανθασμένες (ανύπαρκτες στήλες ή ορθογραφικό λάθος στα ονόματά τους).
  • Ένας τύπος τιμής εκχωρείται σε στήλη διαφορετικού τύπου. Για παράδειγμα, εάν προσπαθήσετε να εισαγάγετε τον αριθμό 47 στη στήλη Όνομα, θα λάβετε ένα σφάλμα. Πρέπει να χρησιμοποιήσετε μια τιμή συμβολοσειράς σε αυτήν τη στήλη. Αλλά αν είχαμε καθορίσει έναν αριθμό σε εισαγωγικά (για παράδειγμα, "47"), θα λειτουργούσε, επειδή είναι μια συμβολοσειρά.
  • Έγινε προσπάθεια εισαγωγής δεδομένων σε πίνακα που δεν υπάρχει. Καθώς και ένα ορθογραφικό λάθος στο όνομα του πίνακα.

Μετά την επιτυχή εισαγωγή των δεδομένων, θα δούμε ότι έχουν προστεθεί στη βάση δεδομένων. Παρακάτω είναι ένα παράδειγμα πίνακα στον οποίο έχουν προστεθεί δεδομένα.

Όλες οι ενότητες του ιστότοπου ή της διαδικτυακής εφαρμογής, όπου απαιτείται η εισαγωγή και εγγραφή ορισμένων δεδομένων (για παράδειγμα, όνομα, ηλικία, διεύθυνση κ.λπ.) χρησιμοποιούν μια απλή συνάρτηση στη γλώσσα mysql INSERT INTO `name_base` (όνομα, τιμή1, value2) VALUES ('Vasya ',' 1 ',' 2 ');

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

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

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

Για παράδειγμα:
Υπάρχουν τέσσερα κελιά στον πίνακα της βάσης δεδομένων. Αυτό σημαίνει ότι και οι τέσσερις μεταβλητές πρέπει να παρατίθενται σε παρένθεση μετά το στοιχείο VALUE (..). Και κάτι ακόμα: εάν η μεταβλητή δεν υπάρχει, ας πούμε ότι αυτή είναι μια προαιρετική παράμετρος. Στη συνέχεια γράφουμε απλώς μια κενή τιμή σε εισαγωγικά ‘’,

"INSERT INTO" name_base` VALUES (NULL, `". $ Όνομα. "`, ``, `2`)"; // η τρίτη κενή τιμή γράφεται σε εισαγωγικά

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

Δεύτερος τρόποςεάν μετά το ερώτημα INSERT INTO `name_base` (...) παρατίθενται όλα τα κελιά μετά το όνομα της βάσης δεδομένων. Ένα παράδειγμα έχει ήδη συζητηθεί λίγο πιο ψηλά. Αν το ξεχάσατε, ας γράψουμε ξανά:

"INSERT INTO` name_base" ("name",` value`, "value2") VALUES (NULL,` ". $ Name." `,` `,` 2`) ";

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

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

Php εγγραφή στη βάση δεδομένων mysql. Πρακτικά παραδείγματα

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

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

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

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

Στο τελευταίο κελί θα γράψουμε την ημερομηνία εισαγωγής του κειμένου σχολίου. Θα γράψουμε σε αριθμητική μορφή σε δευτερόλεπτα χρησιμοποιώντας την τρέχουσα ώρα συνάρτησης ημερομηνίας και ώρας (); Για απλότητα, θα ορίσουμε τη συνάρτηση στη μεταβλητή $ time = time (); Και ας δημιουργήσουμε ένα κελί στη βάση δεδομένων. Ας το ονομάσουμε χρόνο με την παράμετρο int (για αριθμητικές τιμές). Ας γράψουμε τον αριθμό των χαρακτήρων - κατά προτίμηση έντεκα (με μικρό περιθώριο για το μέλλον :-).

Η ένδειξη της βάσης δεδομένων είναι η εξής:

Δομή πίνακα `msg` - ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ ΕΑΝ ΔΕΝ ΥΠΑΡΧΕΙ` msg` (`id` int (10) NOT NULL AUTO_INCREMENT,` name` char (250) NOT NULL, `comment` varchar (2000) NOT NULL,` time` int (11) NOT NULL, PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;

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