Προσθήκη δεδομένων στην PHP. Ερώτημα SQL για προσθήκη και αφαίρεση εγγραφών Προσθήκη εγγραφής σε πίνακα php sql

25.08.2023

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

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

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

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

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

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

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

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

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

  • Ονομαείναι το όνομα του χωραφιού σας. Θα εμφανιστεί στην κορυφή του τραπεζιού σας.
  • Τύπος– εδώ μπορείτε να ορίσετε τον τύπο πεδίου. Για παράδειγμα, επιλέγουμε varcharγιατί εδώ πρέπει να εισάγουμε μια συμβολοσειρά με όνομα (που έχει γράμματα και όχι αριθμούς).
  • Μήκος/Τιμές– χρησιμοποιείται για να ορίσετε το μέγιστο μήκος της καταχώρισής σας σε αυτό το πεδίο.
  • Δείκτης– χρησιμοποιούμε το ευρετήριο «Κύριο» για το πεδίο «Αναγνωριστικό». Κατά τη δημιουργία ενός πίνακα, συνιστάται να έχετε ένα πεδίο ID. Χρησιμοποιείται για την ευρετηρίαση εγγραφών σε έναν πίνακα όταν διαμορφώνονται οι σχέσεις μεταξύ των πινάκων. Μπορεί επίσης να σημειωθεί εδώ "ΟΛΑ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΝΤΑΙ", που σημαίνει Αυτόματη Αύξηση. Αυτή η ρύθμιση θα αυξήσει αυτόματα το ευρετήριο (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 γραμμές) εκτελεί το αίτημά μας και ελέγχει την επιτυχία του αιτήματος:

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

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

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

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

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

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

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

$the_Object->the_Method();

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

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

Δεδομένου ότι ο κώδικας SQL είναι συντακτικά σωστός, το ερωτηματικό κάνει DROP DATABASE user_tableνέο ερώτημα SQL και ο πίνακας χρηστών σας διαγράφεται. Οι προετοιμασμένες εκφράσεις δεν επιτρέπουν χαρακτήρες Και ; για να συμπληρώσετε το αρχικό αίτημα και την οδηγία ΑΠΟΣΤΟΛΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝδεν θα εκτελεστεί ποτέ.

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

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

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

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$βάση δεδομένων;"; $dsn_Options = ; // Δημιουργήστε μια νέα σύνδεση με τη βάση δεδομένων MySQL χρησιμοποιώντας PDO, το $my_Db_Connection είναι μια δοκιμή αντικειμένου ( $my_Db_Connection = νέο PDO($sql, $username, $password, $dsn_Options); echo "Συνδέθηκε με επιτυχία"; ) catch (PDOException $ error) ( echo "Σφάλμα σύνδεσης: " . $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)" // Τώρα λέμε στο σενάριο σε ποια μεταβλητή αναφέρεται στην πραγματικότητα κάθε σύμβολο κράτησης θέσης χρησιμοποιώντας τη μέθοδο bindParam() // Πρώτα; Η παράμετρος είναι το σύμβολο κράτησης θέσης στην παραπάνω δήλωση - η δεύτερη παράμετρος είναι μια μεταβλητή που θα πρέπει να αναφέρεται σε $my_Insert_Statement->bindParam(:first_name, $my_Insert_Statement->bindParam(:last_name, $last_Name(e); , $email // Εκτελέστε το ερώτημα χρησιμοποιώντας τα δεδομένα που μόλις ορίσαμε // Η μέθοδος execute() επιστρέφει TRUE εάν είναι επιτυχής και FALSE εάν δεν είναι, επιτρέποντάς σας να γράψετε τα δικά σας μηνύματα εδώ εάν ( $my_Insert_Statement->). execute()) ( echo "Η νέα εγγραφή δημιουργήθηκε με επιτυχία"; ) else ( echo "Δεν είναι δυνατή η δημιουργία εγγραφής"; ) // Σε αυτό το σημείο μπορείτε να αλλάξετε τα δεδομένα των μεταβλητών και να τα εκτελέσετε ξανά για να προσθέσετε περισσότερα δεδομένα στη βάση δεδομένων $first_Name = "John"; $last_Name = "Σμιθ"; $email = " [email προστατευμένο]"; $my_Insert_Statement->execute(); // Εκτελέστε ξανά τώρα που έχουν αλλάξει οι μεταβλητές if ($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 θα σας φανεί χρήσιμο είτε μαθαίνετε να προγραμματίζετε είτε δημιουργείτε ήδη τον δικό σας ιστότοπο.

Τελευταία ενημέρωση: 1/11/2015

Για να προσθέσετε δεδομένα, χρησιμοποιήστε την έκφραση "INSERT":

$query ="INSERT INTO αγαθών VALUES(NULL, " Samsung Galaxy III", "Samsumg"");

Η δήλωση "INSERT" εισάγει μια γραμμή σε έναν πίνακα. Μετά λέξη-κλειδί INTO υποδηλώνει το όνομα του πίνακα και μετά τις VALUES σε παρένθεση υποδεικνύεται το σύνολο τιμών για όλες τις στήλες. Δεδομένου ότι έχουμε τρεις στήλες στον πίνακα, υποδεικνύουμε τρεις τιμές.

Δεδομένου ότι στο προηγούμενο θέμα, κατά τη δημιουργία ενός πίνακα, καθορίσαμε την ακόλουθη σειρά στηλών: id, όνομα, εταιρεία, σε αυτήν την περίπτωση η τιμή NULL μεταβιβάζεται για τη στήλη id, "Samsung Galaxy III" για το όνομα και "Samsumg". για την εταιρεία.

Εφόσον η στήλη id ορίζεται ως AUTO_INCREMENT, δεν χρειάζεται να ορίσουμε ένα συγκεκριμένο για αυτήν. αριθμητική τιμή, και μπορείτε να περάσετε μια τιμή NULL και η MySQL θα εκχωρήσει την επόμενη διαθέσιμη τιμή στη στήλη.

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

Προστέθηκαν δεδομένα"; ) // κλείσιμο της σύνδεσης mysqli_close($link); ) ?>

Προσθήκη νέου μοντέλου

Εισαγάγετε μοντέλο:

Κατασκευαστής:



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

Ασφάλεια και MySQL

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

Έτσι, χρησιμοποιούμε πραγματικά το χαρακτήρα διαφυγής δύο φορές: πρώτα για την έκφραση sql χρησιμοποιώντας τη συνάρτηση mysqli_real_escape_string() και μετά για το html χρησιμοποιώντας τη συνάρτηση htmlentities(). Αυτό θα μας επιτρέψει να προστατευτούμε από δύο τύπους επιθέσεων ταυτόχρονα: επιθέσεις XSS και ενέσεις SQL.

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

Για αρχή Ερώτημα SQL για προσθήκη νέα καταχώρησηστο τραπέζι:

INSERT INTO users (login, pass) τιμές ("TestUser", "123456")

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

Μερικές φορές απαιτείται ενημέρωση καταχώρισης πίνακα, για αυτό υπάρχει το εξής Ερώτημα SQL:

UPDATE users SET login = "TestUser2", pass="1234560" WHERE login="TestUser"

Αυτό το αίτημαείναι πιο περίπλοκο αφού έχει το σχέδιο" ΟΠΟΥ", αλλά περισσότερα για αυτό παρακάτω. Πρώτα έρχεται η εντολή " ΕΚΣΥΓΧΡΟΝΙΖΩ", μετά το όνομα του πίνακα και μετά το " ΣΕΙΡΑ"Περιγράφουμε τις τιμές όλων των πεδίων που θέλουμε να αλλάξουμε. Θα ήταν απλό, αλλά τίθεται το ερώτημα: " Ποια εγγραφή πρέπει να ενημερωθεί;". Γι' αυτό υπάρχει " ΟΠΟΥ". Σε αυτήν την περίπτωση, ενημερώνουμε την εγγραφή, το πεδίο " σύνδεση"που έχει σημασία" TestUserΣημειώστε ότι αν υπάρχουν αρκετές τέτοιες καταγραφές, τότε απολύτως όλα θα ενημερωθούν! Αυτό είναι πολύ σημαντικό να το καταλάβετε, διαφορετικά κινδυνεύετε να χάσετε το τραπέζι σας.

Ας μιλήσουμε λίγο περισσότερο για το " ΟΠΟΥ«Εξάλλου απλούς ελέγχουςΓια την ισότητα υπάρχουν και ανισότητες, καθώς και λογικές πράξεις: ΚΑΙΚαι Ή.

ΕΝΗΜΕΡΩΣΗ χρηστών SET login = "TestUser2", pass="1234560" WHERE id< 15 AND login="TestUser"

Δεδομένος Ερώτημα SQLθα ενημερώσει αυτά τα αρχεία, ταυτότητααπό τα οποία είναι λιγότερα 15 ΚΑΙπεδίο" σύνδεση"έχει σημασία" TestUser"Ελπίζω να έχεις καταλάβει το σχέδιο" ΟΠΟΥ"γιατί είναι πολύ σημαντικό. Ακριβώς" ΟΠΟΥ"χρησιμοποιείται όταν ανάκτηση εγγραφών από πίνακες, και αυτή είναι η πιο συχνά χρησιμοποιούμενη εργασία κατά την εργασία με βάσεις δεδομένων.

Και τέλος απλό Ερώτημα SQL για τη διαγραφή εγγραφών από έναν πίνακα:

ΔΙΑΓΡΑΦΗ ΑΠΟ χρήστες WHERE login="TestUser2"

Μετά την εντολή " ΔΙΑΓΡΑΦΗ ΑΠΟ" είναι το όνομα του πίνακα στον οποίο θέλετε να διαγράψετε εγγραφές. Στη συνέχεια περιγράφουμε την κατασκευή "WHERE". Εάν η εγγραφή πληροί τις περιγραφόμενες συνθήκες, θα διαγραφεί. Και πάλι, προσέξτε, ανάλογα με τον αριθμό των εγγραφών που ικανοποιούν η κατάσταση μετά από " ΟΠΟΥ", οποιοσδήποτε αριθμός από αυτούς μπορεί να διαγραφεί.

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

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

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

Αφού συνδεθείτε στο phpMyAdmin, θα δείτε αυτή τη διεπαφή:

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

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

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

  • Όνομα είναι το όνομα της στήλης που εμφανίζεται στην κορυφή του πίνακα.
  • Τύπος — τύπος στήλης. Για παράδειγμα, επιλέξαμε varchar επειδή θα εισάγουμε τιμές συμβολοσειράς.
  • Μήκος/Τιμές - Χρησιμοποιείται για τον καθορισμό του μέγιστου μήκους που μπορεί να έχει μια καταχώρηση σε αυτήν τη στήλη.
  • Ευρετήριο - Χρησιμοποιήσαμε το ευρετήριο "Κύριο" για το πεδίο "Αναγνωριστικό". Κατά τη δημιουργία ενός πίνακα, συνιστάται να χρησιμοποιείτε μόνο μία στήλη ως πρωτεύον κλειδί. Χρησιμοποιείται για τη λίστα των εγγραφών στον πίνακα και απαιτείται κατά τη ρύθμιση του πίνακα. Σημείωσα επίσης το "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 προστατευμένο]"; // Δημιουργήστε μια μεταβλητή που καλεί τη μέθοδο προετοιμασίας() του αντικειμένου της βάσης δεδομένων // Το ερώτημα SQL που θέλετε να εκτελέσετε εισάγεται ως παράμετρος και τα σύμβολα κράτησης θέσης γράφονται ως εξής: placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare(" INSERT INTO Students (όνομα, επώνυμο, email) VALUES (:first_name, :last_name, :email)"); // Λέμε τώρα στο σενάριο ποια μεταβλητή αναφέρεται σε κάθε σύμβολο κράτησης θέσης για να χρησιμοποιήσει τη μέθοδο bindParam() // Η πρώτη παράμετρος είναι το σύμβολο κράτησης θέσης στην παραπάνω δήλωση , η δεύτερη είναι η μεταβλητή στην οποία θα πρέπει να αναφέρεται $my_Insert_Statement->bindParam(:first_name, $first_Name->bindParam(:last_name, $last_Name); μόλις ορίστηκε // Η μέθοδος execute() επιστρέφει TRUE εάν είναι επιτυχής και FALSE εάν όχι, δίνοντάς σας την επιλογή να εκτυπώσετε το δικό σας if μήνυμα ($my_Insert_Statement->execute()) ( echo "New recordcreatedsuccessfully"; ) else ( echo "Δεν είναι δυνατή η δημιουργία εγγραφής"; ) // Σε αυτό το σημείο μπορείτε να αλλάξετε τα δεδομένα της μεταβλητής και να εκτελέσετε ένα ερώτημα για να προσθέσετε περισσότερα δεδομένα στα δεδομένα της βάσης δεδομένων στη βάση δεδομένων $first_Name = "John"; $last_Name = "Σμιθ"; $email = " [email προστατευμένο]"; $my_Insert_Statement->execute(); // Εκτέλεση ξανά όταν αλλάξει η μεταβλητή if ($my_Insert_Statement->execute()) (echo "New recordcreatedsuccessfully"; ) else (echo "Δεν είναι δυνατή η δημιουργία εγγραφής";

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

  • bindParam() - Αυτή η μέθοδος αξιολογεί τα δεδομένα όταν επιτευχθεί η μέθοδος execute(). Την πρώτη φορά που το σενάριο φτάνει στη μέθοδο execute(), βλέπει ότι το $first_Name ταιριάζει με το "Thom". Στη συνέχεια δεσμεύει αυτήν την τιμή και εκτελεί το αίτημα. Όταν το σενάριο φτάσει στη δεύτερη μέθοδο execute(), βλέπει ότι το $first_Name ταιριάζει πλέον με το "John". Στη συνέχεια δεσμεύει αυτήν την τιμή και εκτελεί ξανά το ερώτημα με νέες τιμές. Είναι σημαντικό να θυμόμαστε ότι έχουμε ορίσει ένα ερώτημα μία φορά και το χρησιμοποιούμε ξανά με διαφορετικά δεδομένα σε διαφορετικά σημεία του σεναρίου.
  • bindValue() - Αυτή η μέθοδος αξιολογεί τα δεδομένα μόλις επιτευχθεί η bindValue(). Εφόσον το $first_Name ορίστηκε σε "Thom", όταν επιτευχθεί η bindValue(), θα χρησιμοποιείται κάθε φορά που καλείται η μέθοδος execute() στο $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. Θα μάθετε πώς να συνδέεστε σε μια βάση δεδομένων 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 και να γράψετε τον ακόλουθο κώδικα σε αυτόν:

Body(width:400px; margin:0 auto; background:#F8F4B6;) label(display: block; float: left; πλάτος: 150px; padding: 0 10px; margin: 18px 0 0; text-align: right;) # υποβολή(float:right; margin:5px 50px 10px 0;)

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

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

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

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

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

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

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

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

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

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

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

"); ?>

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

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

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

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

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

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

$first_name = $_REQUEST["first_name"]; $last_name = $_REQUEST["last_name"]; $email = $_REQUEST["email"]; $facebook = $_REQUEST["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 identifier»). Αλλά ο χρήστης δεν θα εισάγει πάντα αυτά τα δεδομένα όπως χρειαζόμαστε. Μπορεί να εισάγει: "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, να επιλέγουμε τις απαραίτητες εγγραφές και να τις εμφανίζουμε στην οθόνη. Για να μην χάσετε το επόμενο μάθημα, εγγραφείτε σε ενημερώσεις ιστολογίου χρησιμοποιώντας τη φόρμα εγγραφής που βλέπετε παρακάτω.

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

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