Σύνδεση σε βάση MySQL μέσω της PHP

Η PHP υποστηρίζει σύνδεση σε βάση MySQL χωρίς να χρειάζεται να εγκαταστήσουμε κάποιο επιπλέον πακέτο. Το μόνο που χρειαζόμαστε λοιπόν είναι τις κατάλληλες συναρτήσεις και τις κατάλληλες παραμέτρους.
Όσον αφορά στις παραμέτρους θα χρειαστούμε:
  • Τη διεύθυνση του server όπου εκτελείται η mysql:
    Συνήθως η τιμή αυτή είναι localhost. Σε περίπτωση όμως που η MySQL βρίσκεται σε διαφορετικό υπολογιστή από αυτόν στον οποίο εκτελείται ο WebServer ή εκτελείται σε διαφορετική θύρα τότε η τιμή θα είναι WebServerAddress:MySQLPort.
  • Το username του χρήστη της MySQL:
    Συνήθως, για κάθε site δημιουργούμε έναν διαφορετικό χρήστη mysql και ποτέ(!) δε χρησιμοποιούμε τον χρήστη root. Ο χρήστης που θα επιλέξουμε, φροντίζουμε να έχει τα κατάλληλα δικαιώματα για SELECT,INSERT,UPDATE ή DELETE(αν χρειάζονται όλα αυτά)
  • Τον κωδικό του χρήστης της MySQL
  • Το όνομα της βάσης:
    Το όνομα της βάσης στην οποία θέλουμε να συνδεθούμε. Οφείλουμε να έχει ο χρήστης δικαιώματα προσπέλασης(δηλ. SELECT τουλάχιστον) στα περιεχόμενα της βάσης
Όσον αφορά, αντίθετα, στις συναρτήσεις που θα χρειαστούμε έχουμε τις παρακάτω:
  • mysql_connect($server,$username,$password):
    Η συνάρτηση αυτή δημιουργεί μία σύνδεση με τη βάση mysql. Πάνω στη σύνδεση αυτή θα πατήσουν οι υπόλοιπες συναρτήσεις ώστε να μπορέσουν να εκτελεστούν
  • mysql_select_dib($database):
    Η συνάρτηση αυτή επιλέγει σαν default για τις αναζητήσεις μας, μέσω του προηγουμένως δημιουργημένου connection, το όνομα της βάσης που της δίνουμε σαν όρισμα.
  • mysql_query($query):
    Η συνάρτηση αυτή δέχεται σαν όρισμα μία εντολή SQL σε μορφή string και την εκτελεί.
Έτσι λοιπόν προκύπτει ο παρακάτω κώδικας της συνάρτησης connect_db():
function connect_db(){
$connection=mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD) or die("Αδύνατη η σύνδεση στη βάση δεδομένων");
mysql_select_db(DB_DATABASE);
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET NAMES 'utf8'");
}

Παρατηρήσεις

        Για να εμφανίζονται σωστά οι ελληνικοί χαρακτήρες(ή γενικότερα οι UTF-8 χαρακτήρες) οφείλουμε να χρησιμοποιήσουμε τις εντολές mysql_query("SET CHARACTER SET 'utf8'") και mysql_query("SET NAMES 'utf8'") που προετοιμάζουν την κωδικοποίηση της σύνδεσης. Οι τιμές που θα ορίσουμε βέβαια εξαρτάται από την κωδικοποιήση που έχουμε ορίσει στους πίνακες της βάσης. Αν πχ έχουμε ορίσει σαν κωδικοποίηση το greek, τότε θα προσαρμόσουμε και τις εντολές κατάλληλα, δηλαδή mysql_query("SET CHARACTER SET 'greek'") και mysql_query("SET NAMES 'greek'").

        Σε περίπτωση που χρειάζεται να συνδεθούμε σε δύο διαφορετικές βάσεις μέσω της ίδιας PHP εφαρμογής, θα χρειαστούμε δύο διαφορετικά connections ενώ οι συναρτήσεις mysql_select_db() και mysql_query() θα έχουν πλέον δύο ορίσματα. Ένα αυτό που είχαν και πριν και ένα ακόμη που θα δείχνει την connection στην οποία θα εφαρμοστεί. Δηλαδή,
$connection=mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD) or die("Αδύνατη η σύνδεση στη βάση δεδομένων");
mysql_select_db(DB_DATABASE,$connection);
$connection2=mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD) or die("Αδύνατη η σύνδεση στη βάση δεδομένων");
mysql_select_db(DB_DATABASE2,$connection2);

Comments

Popular Posts