Skip to main content

Σύνδεση σε βάση 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_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("Αδύνατη η σύνδεση στη βάση δεδομένων");
$connection2=mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD) or die("Αδύνατη η σύνδεση στη βάση δεδομένων");


Popular posts from this blog

Drupal: Allow registrations through Invite or Referral modules only

The Invite module provides invitations from existing users to their contacts. The Referral module, in contrary, creates a special URL for each existing user, which can be found in each user's profile, and allows new user registration. Even though, these two modules seem to provide the same functionality, they don't (and they shouldn't). Invite module, provides a mechanism for a site administrator to limit new registrations to "Invitations only". Referral module doesn't provide any of this functionality. Some users have requested the Invite module and Referral module to join in one module. Until now, there isn't anything to that direction. Wouldn't it be great though if there was a solution to limit drupal registration to referral or invitation only? Copy the functions below to a refinvite.module file in your sites→all→modules→refinvite folder and enable the module. Then go to http://<your-address-here>/admin/user/settings and enable the new …

Drupal: Status report problem: HTTP request status fails

Some of you may have encountered this problem in some cases. In "Status Report" page, accidentally appears the error below:

HTTP request status   FailsYour system or network configuration does not allow Drupal to access web pages, resulting in reduced functionality. This could be due to your webserver configuration or PHP settings, and should be resolved in order to download information about available updates, fetch aggregator feeds, sign in via OpenID, or use other network-dependent services.
What I did, was to recheck that my webserver had access to internet. Of course it had! The problem exists mostly when there is no information to resolve the domain name used with the local ip address of the webserver. This means that an error occurs in the entries of the DNS server.

In cases where DNS server is not existant(ex. local testing environment) all you have to do is inform the /etc/hosts file. For example if you use the domain http://www.example.local/ and your local ip addr…

Override the default Opigno LMS navigation menu

I recently used Opigno LMS for a client's project. It's actually a LMS distribution of Drupal. It supports WebEx meetings, Lessons, even PDF Certificates after you complete a Course. In my case though I needed Lessons but no PDF Certificates. Disabling the proper apps/modules wasn't anything out of the ordinary Drupal procedure. What was lacking though was a way to override the main menu to not display the My Achievements item.My Achievements is enabled as long as the Opigno Quiz App (@see Lessons above) is enabled and no hook exists to override this functionality. To disable it I had to create a custom theme using the Platon theme as a base (Platon is the default theme of the Opigno LMS) and copy 3 functions of Platon's template.php file to my theme's template.php with the proper modifications to get what I wanted.See the code below...